Haskell
もう数年関数型プログラミングを断続的に勉強し続けていますが、作れと言われれば作れるものの出来上がるコードが全然関数型じゃないばかりかスマートじゃありません。これはもうオブジェクト指向や手続き型に脳みそが浸食されていて、考え方の部分から関数…
Tic Tac Toe(○×ゲーム)のゲーム履歴(History)の保存に使えそうな、Data.Treeというデータ型を標準ライブラリから見つけました。自分でほぼ同じものを作ろうとしていたのでちょっと調べてみて使えそうなら使おうと思います。 まず、どんなものか調べてみます…
人が作ったHaskellのコードを読んでいると、記号の意味がわからなくて困ることが多々あったので纏めてみた。hrefでもGoogleでも検索できないしさ… Haskellの演算子で使える記号 !#$%&*+./?@\^|-~及びUnicodeに含まれる記号(一覧が欲しい…けど√とか→とかもき…
今回は息抜きです。Haskellで素数を求めてみます。 まずは、普通に1と自分以外(√自分)の間の整数で割れなかったら素数とします。 {-- 素数の一覧を表示 単純に全ての整数(2 〜 √x)で割ってみる --} -- xが素数だったらTrueを返す is_prime :: Int -> Bool is…
この前http://d.hatena.ne.jp/marony0607/20111113/1321144101、HaskellでTic-Tac-Toe(○×ゲーム)を作ると宣言しました。完成したら公開しようと思っていましたが、なかなか時間が取れずいつになるか分からないので、今の時点でのコードを公開します。 まずコ…
今回は自分の関数型言語の疑問点を全部解決します。すぐ忘れるので備忘録も兼ねています。まだまだ勉強中で分からないことだらけなんですが、ひとまずよく話題に上るけどよく分かってない用語を取り上げました。今回もHaskellで検証しました。 関数型言語に…
突然ですが、HaskellでTic-Tac-Toe(○×ゲーム)を作ることにしました。簡単にどんなものを作るのか決めたいと思います。ScalaでSWT使って作るのと悩んだのですが、関数型言語に慣れるためにあえてHaskellで行きます。 要件 コンソールアプリケーションとする …
前回http://d.hatena.ne.jp/marony0607/20111031/1320050127FizzBuzz問題は終わりにしますって言ったんですが、どうも気になって仕方がないので続きます。FizzBuzz問題くらいスマートに解きたいじゃないですか。 気になっていたのは、呼び出し側(main関数)が…
とうとうHaskellの鬼門「モナド」の話です。色々と試してみました。基本の文法も分かってないのにモナドなんてやってる場合かよっていう状態ですが… モナド 私なりに理解したHaskellのモナドとは、 モナドとは単なる入れ物(ただし、return関数と">>="演算子…
前々回http://d.hatena.ne.jp/marony0607/20111025/1319547210の続きです。 ruiccさんにコメント欄でElem型に比較演算子などを定義する方法を教えていただいたので、それを自分なりに使用して綺麗なコードに書き換えてみました。 まず、Elem型をShow, Eq, Or…
えーと、今回のは番外編です。HaskellでのFizzBuzz問題ですが、さすがの私でも剰余を使えば出来るんだよということをお見せします!!(前回http://d.hatena.ne.jp/marony0607/20111025/1319547210) (本当はガード式とかタプルとかリストの内包表記とかを勉強…
FizzBuzzも解けない開発者だというのはやはり問題なので、前回http://d.hatena.ne.jp/marony0607/20111023/1319331471に続きひたすら頑張ります。前回、最初の5しか"Buzz"に変換されなかったのは、myElem関数の中の"x > y"の不等号が逆だったからでした。"x …
関数型言語はいまだによく分かってませんが、具体的なプログラムを書いてみればちょっとはわかるかなと思って、FizzBuzz問題を解いてみることにしました。 FizzBuzz問題についてはこちら。Fizz Buzz - Wikipedia ちなみに、まったく調べずに解くのはまだ無理…
未だに関数型言語とは何かがよく分かってません。 続けて勉強していきます。なお、Scalaだとオブジェクト指向というか手続きも書けてしまうので、Haskellも同時に使っていくことにしました。もしくは、Haskellを先に覚えてScalaを覚えるという順番になるかも…