scala

Scalaでのモナドの活用事例について

Scalaのfor式ではmap, flatMap関数を使って処理をつなげていけることが分かったとしても、実際にどのような場面で使われるのかが把握できないとモナドを使うメリットがわかないと思います。なので今回はScalaでのモナドの活用方法をいくつかまとめていきたい…

Scalaで作って理解するモナド

Haskellでのモナド型クラスが有名で、Haskellの創始者のひとりであるフィリップ・ワドラーはモナドについて"自己関手の圏におけるモノイド対象"と答えているらしい。そのほかにも調べているとモナドは箱に入った値を返す関数を箱の中の値に適用するといった…

Ninety-Nine Scala Problemsを解いてみた

ドワンゴが公開してい新卒エンジニア向けのScalaの研修資料で一通り終わった後に説明があるNinety-Nine Scala Problemsについてリスト操作の問題を解いてみました。 せっかくなので何問かまとめてみようと思います。 P19 (**) Rotate a list N places to the…

ecサイトをモデリングしてscalaで実装してみる

以前行っていたecサイトのモデリングについて実際にScalaで実装してみたいと思います。 今回は以下のユースケースに対応できるつくりにしたいと思います。 ・ユーザはログイン画面でユーザ名、パスワードを入力してパスワード認証が行える。 ・ユーザはショ…

scalaでパーザーコンビネーターを書いてみた

パーザーコンビネータとは パーザを部品として、より複雑なパーザを構築する手法。例えば文字列の一致など基本的なパーサーを作っていおいて、それを組み合わせることで数式のパーサーを作ったりする。 なぜパーザーコンビネータ? 基本的な文法を覚えた後の…

sbt assemlby実行時にリソースフォルダを変更できるようにしたい

まずデフォルトのリソースフォルダを変更してみる sbt assemblyで実行可能jarを作成する際通常は"src/main/resources"がリソースフォルダとして使われますが、build.sbtにresourceDirectory in Compileの設定をすることによりデフォルトのリソースフォルダを…

Scalaでseqを操作してみる

scalaでSeqを操作してみる まず以下のcase classがあったとし、 case class Element(id: Int, time: java.sql.Timestamp) 初期のデータとして以下を保持する val elementSeq = Array( Element(1, new java.sql.Timestamp(new DateTime(2017, 8, 10, 16, 13).…

ScalaでfoldLeftを使ってみる

foldLeftを使ってみる foldLeft使用の覚書 list内の単語の集計を行って降順にする これだけでリスト内の単語の集計とソートが行える val countWordsList = List("a", "b", "c", "a", "d", "b", "e", "b") val wordAggregate = countWordsList.foldLeft(Map[S…

PlayFramework事始め

PlayFramework 事始め PlayFramework 事始め playのインストール プロジェクトの作成 activatorからプロジェクト作成 giter8からplayのプロジェクトを作成 コンソールの起動 サーバを起動 コンパイル テスト デバッグ sbtの利用 IDE eclipseで開発する Intel…

ApacheSparkの基本的なデータ操作

データ操作 Spark2.1で動作確認 build.sbt IDEAから実行できるようにbuild.sbtに以下を追加。対象のライブラリが存在しない場合はmaven_centralで確認する。 val sparkVersion = "2.1.0" libraryDependencies ++= Seq( "org.apache.spark" % "spark-core_2.1…

Apache Sparkを触ってみた

Apache Sparkとは? Hadoopと同じく分散処理のフレームワーク。HadoopではMapReduceと言って複数マシンで分散処理を行ってから結果をストレージに書き出す。1回の処理では終わらない場合はデータの処理フローを形成することになり、よみ出し→分散処理→書き込…

Scalaで数式をパースして整形表示

数式パーサ Scalaのコップ本を一通り読んだので振り返りも兼ねて数式をパースして計算、整形するDSLを実装したいと思います。全部自力で作れたら良いのですが、ソースコードはほとんど(http://blog.j5ik2o.me/entry/20101126/1290763057) とコップ本から拝借…

skinny事始め

scalaのフレームワークで簡単にとっつきやすそうのを探したらskinnyが良さそうだったので、触り始めた際のメモを残しておきたいと思います。 skinnyインストール(mac) $ brew updated $ brew install skinny プロジェクト作成から起動 $ skinny new プロジェ…

Scalaで新しく制御構造を作成する

Scalaで新しい制御構造を自作する Scalaは関数型言語にあるため関数が第一級のオブジェクトとなります。そのためJavaなどのオブジェクト指向言語と比べてどんな違いがあるかというと、関数を引数にして別の関数を呼び出すことができます。俗に言う高階関数と…

Scalaのfor式とflatMapについて

自分は職場では良くjava7でプログラミングするのでjava8のStream APIなどを触ることがないのですが、そのような状態だとscalaのfor式やflatMapに抵抗があったので簡単に使い方だけでもおさらいしてみたいと思います。まず、動作確認で使うクラスは以下になり…

SCALA play frameworkと angular.jsでtodoアプリ開発

scala play frameworkとangular.jsを連携してTODOアプリを作ったのでメモ○概要 タイトルとステータス(終了、未終了)のステータスの情報を持ったTodoアプリを作成する。クライアントサイドではangular.jsを使いサーバーサイドではscalaのplay frameworkを使う…