先日、 Scala Advent Calendar 2014 - Qiita で「関数プログラミング 珠玉のアルゴリズムデザイン」の第1章をScalaで実装してみましたが。味をしめて第2章もやってみたいと思います。 関数プログラミング 珠玉のアルゴリズムデザイン 作者: Richard bird,山下伸夫出版社/メーカー: オーム社発売日: 2014/11/12メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見る 第2章の題材は「上位者問題」です。 この問題、思ったんですけど、CodeIQで結城 浩さんが出題した「クロッシング問題」と本質的に同じですね。 挑戦者求む!【アルゴリズム】交差点をすばやく数えよう! by The Essence of Programming 結城 浩│CodeIQ この問題、自分は解けませんでした*1。(^^; 上位者問題 上位者問題とは、あ
Scala Advent Calendar 2014 - Qiita14日目の記事です。 昨日の記事は、 @gakuzzzz さんの play2-auth で OpenID とか Twitter OAuth とか OAuth2.0 とか でした。 さて、今日のネタです。。。 関数プログラミング 珠玉のアルゴリズムデザイン 作者: Richard bird,山下伸夫出版社/メーカー: オーム社発売日: 2014/11/12メディア: 単行本(ソフトカバー)この商品を含むブログ (1件) を見る この本ですが、関数型プログラミングのアルゴリズムデザインを紹介した本で、とても難しいのですが、面白いです。 Advent Calencdarのネタとして、これに出てくるアルゴリズムをScalaで実装してみたいと思います。 お題は、一番簡単そうな「第1章 最小自由数」です。 「最小自由数」を求める一番シ
Haskell などの (純粋遅延) 関数型言語を学習する際の理解しにくい概念に「部分適用」と「カリー化」があります。実は両者とも非常に単純で、理解してしまえば難しくはないのですが、最初に学習する時には以下の疑問が沸き立ちます。 「部分適用」「カリー化」のメリットって何だろう? 「部分適用」「カリー化」の存在意義がわからない 誤解を恐れずに書くと、「部分適用」や「カリー化」って無くても困らないんですよね。 ただ、「部分適用」や「カリー化」があるとプログラミングが非常に楽しくなります。また、実用性の観点から見てもこれは非常に役立ちますし、「部分適用」と「カリー化」が理解できてこそ、初めて関数型プログラマのスタートラインに立ったと言っても過言ではありません。 特に Haskell では、パズルのような感覚でプログラミングすることが比較的多くありますが、これは「部分適用」によって得られていると思
I'm releasing the mvc library for model-view-controller (MVC) programming in Haskell. I initially designed this library with games and user interfaces in mind, but the larger goal of this library is to provide a mathematically inspired framework for general-purpose component sharing in Haskell. This library differs in a significant way from other MVC libraries: this API statically enforces in the
「純粋関数型言語はデバッグしにくい。だって純粋な関数で printf デバッグできないから」とつぶやいている人をよく見かけます。これまで放置してきましたが、リツイートが50を超えたので、Haskellでのデバッグについて書きます。 例外処理と同じように、Haskell でのデバッグでは、純粋な関数と IO を分けて考える必要あります。 IO での printf デバッグ IO では、putStrLn や print が使えるから問題ないですよね? foo :: Int -> IO Bool foo i = do x <- あれして i putStrLn $ "x = " ++ show x これして putStrLn "ここも通過" -- それもする y <- それもする print y return y ちなみに、forkIO 起動した軽量スレッドから putStrLn する場合、軽量ス
http://www.well-typed.com/blog/90/ foldlに関するこの記事(英文)が面白かったので、勝手翻訳しました。 foldlなんとかなるといいですね。 foldlを直す foldl 関数は壊れている。壊れているとみんなが知っている。 四半世紀近く壊れたままだ。ついにこれを修正する時が来た! 今日、私はPrelude.foldlをData.List.foldl'として知られる実装で再定義することを提案する。 foldlは壊れている! 既にご存知だとは思うが、念のため… Haskellerが必ずfoldlではなく、foldrやfoldl'を使うように勧めてくることにお気づきだろうか? 例えばReal World Haskellでは次のように言っている。 `foldl`のサンクの挙動のため、実アプリではこの関数を使わないようにするのが望ましい。 特に問題がない場合でも
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く