タグ

ブックマーク / kmizu.hatenablog.com (4)

  • sbt + sbt-idea + Intellij Scala Pluginを使ったScala開発 (in Mac OS X) - kmizuの日記

    注意:この記事の内容は、2013年7月2日現在、やや古くなっています。現在は「Use external build」のチェックはONにしたままで、「Use project FSC」をチェックしない方が安定して動作します。これは、最近のアップデート(ここ1〜2ヶ月くらいの話ですが)「Use external build」を使ったときに、IDEAが内部でzincというsbtベースのスタンドアロンなコンパイラを内部で使うようになった事に起因しています。コンパイラの設定以外は現在でもそのまま通用しますが、このエントリを読んでIntelliJ IDEA + ScalaプラグインによるScala開発を行おうとしている人は注意してください。 これは、Scala入門をIntelliJ IDEAでやろうとしている人向けのエントリではありません。このエントリでは、IntelliJ IDEAのScalaプラグイ

    sbt + sbt-idea + Intellij Scala Pluginを使ったScala開発 (in Mac OS X) - kmizuの日記
  • Iterator.continually()を使おう - kmizuの日記

    Scalaの標準IOライブラリであるscala.io(.Source)は非常に腐ってます。読み込みしか対応してない上に、バイト列の読み込みもサポートしてないという代物。しかも、Scala 2.7まではscala.io.Sourceがそのままだとcloseできなかったりとか(今はcloseできます)。さっさと退場して欲しい代替ライブラリが標準になって欲しいところなんですが、現状の情勢をみるにしばらく先になりそうな感じです。 というわけで、Scalaを使うならJavaのIOライブラリとお付き合いしなければいけません。とりあえず、Commons IOとか使うのも良いかもしれませんが、ちょっとしたものを書くときにいちいちCommons IO使うのも面倒くさいです。 じゃあ、BufferedReaderとかをいちいちwhileループで回すのかといえばそれも面倒くさいです。そこで、その苦痛を緩和してく

    Iterator.continually()を使おう - kmizuの日記
  • 第14回 関数脳のつくり方 Second Season 〜モナドで悟りをひらく〜 - 刺激を求める技術者に捧げるScala講座:ITpro へのツッコミ - kmizuの日記

    ITProのScala連載「刺激を求める技術者に捧げるScala講座」の第14回 関数脳のつくり方 Second Season 〜モナドで悟りをひらく〜がはてなブックマークで150ブクマ超えるなど注目を集めていますが、読んで見ると初学者に誤解を与える箇所が散見されるので、一応、連載に関わってる者(といっても1回記事書いただけですが)の一人としてツッコミを入れさせていただきます。 「参照透明性を保持しながら手続き型的な記述をするための枠組み」?(p.1) モナドとは,関数型言語で,参照透明性を保持しながら手続き型的な記述をするための枠組みです。 早速ですが、これは、IOモナドやStateモナドには当てはまっても、全てのモナドについて当てはまるものではないですよね。たとえば、Maybeモナドではこれは当てはまりません。 「モナドがHaskellで必要な理由」? これはページタイトルの一部ですが

    第14回 関数脳のつくり方 Second Season 〜モナドで悟りをひらく〜 - 刺激を求める技術者に捧げるScala講座:ITpro へのツッコミ - kmizuの日記
  • Scalaの標準(コレクション)APIを読もう:車輪を再発明する前に - kmizuの日記

    なんか久しぶりに、技術ネタっぽい何かです。 Scalaの標準ライブラリは結構偏りがあって、scala.ioとかのIO周りは壊滅的だったりする(ので早くScala-IO入って欲しい)のですが、コレクションライブラリは結構充実してて、色々便利メソッドがあったりします。コレクション絡みで何か非常に短めのメソッド再発名発明したくなったら、APIリファレンスを読んでみると良いかもしれません。 例1: Option#toRight Optionは、Scalaでは非常に色々なところで使われており、それゆえにScalaでnullが明示的に使われる場面はあまりありません。しかし、Optionは、Some(x)かNoneの2種類しかなく、Noneの場合にどのようなエラーが発生したかという情報を持ち運ぶことができません。そのような場合、Eitherを使うことができますが、OptionからEitherに変換したい

    Scalaの標準(コレクション)APIを読もう:車輪を再発明する前に - kmizuの日記
  • 1