2012-01-01から1ヶ月間の記事一覧

第9章 対話プログラム #5

では実際に解いてみよう。 9.9 練習問題 アクション getLine に、削除キーで文字を消去できる機能を加えたアクション readLine :: IO String を定義せよ。ヒント:一文字削除するための制御文字は "\DEL"、一文字戻るための制御文字列は "\ESC[1D" である。 …

ターミナル

さて、getChの前から怪しいと思ってたのだけど、getCharがEnterを押すまでキーを認識しない。 いろいろ調べると、バッファリングモードの問題らしく import IO do hSetBuffering stdio NoBuffering とかなんとかそういうのをやれと書いてある。が、やっても…

第9章 対話プログラム #4

9.9 練習問題 今日は時間がないので、問題文を写すだけにしておく。 アクション getLine に、削除キーで文字を消去できる機能を加えたアクション readLine :: IO String を定義せよ。ヒント:一文字削除するための制御文字は "\DEL"、一文字戻るための制御文…

木探索とCPS

もともと、俺のHaskell学習の目標は、“http://d.hatena.ne.jp/rst76/20100706/1278430517を全部理解できるようになること”だったわけで、それは今でも変わっていない。 で、Haskellはだんだんわかって来たけど、“木探索から CPS にすることで効率化”が腑に落…

第9章 対話プログラム #3

ライフゲーム さて、9.7はライフゲームの実装。 ひたすら写経。9.5で実装した関数群を使っている。 module NineSeven where import NineFive width :: Int width = 5 height :: Int height = 5 type Board = [Pos] glider :: Board glider = [(4,2), (2,3), …

getCh

9.6の計算機プログラムの中でgetChという関数が出てきていて、コンパイルに通らないのでgetCharに置き換えてたんだけど、 Hugs, but can be defined in Haskell as follows: >|haskell| import System.IO getCh :: IO Char getCh = do hSetEcho stdin False …

第9章 対話プログラム #2

というわけでminttyからhugsを起動する方法にしたら捗った。 あと、今までは全部1ファイルでやろうとしていたが、色々無理が出てきたのでモジュール化した。 module NineSix where import Parsing import Expr import NineFive box :: [String] box = ["+---…

Windowsでもいいや

MSYS上のminttyからhugsを起動すればいいということで、今後はそうする。

F#のつまみぐい

F#

Haskellにくわしい後輩から「F#教えてください」と言われたが、俺もわからんのよ。F#のコードを書いたことがないので。 でもそれじゃつまらないので、Haskellの勉強で学んだ知識をもとにF#に挑戦してみた。 いろいろ試行錯誤した結果がこれだ。One, Two Thre…