or1ko's diary

日々を書きます

思考の流れについて

思考の流れ
○をして、〜して、〜する

Rubyでは

puts ARGF.each.take(n)

Haskellでは

main do cs <- getContents
  putStr (unlines (take n lines cs))
  • 人間がどう感じるか
  • 人間は進化する
  • 新たな知識
  • 慣れ
  • 最適化

"Haskellでは"というのが,気になります.(syntax errorなコードを横に置いといたとしても)

Haskellで,Rubyの例みたいに書くんだったら,下みたいなコード.(nは別の所で定義されているとする)

main = putStr . unlines . take n . lines =<< getContents

そもそも,Haskellというか関数型プログラミングは思考の流れはもっと自由だと思う.私はHaskellをかじった程度でまだまだだけど,そう感じることが多い.というか,Haskellで書いていると,自分が考えた順番が良くないと気づかされることが良くある.(それに,大学のプログラミング言語論の授業でも習ったしw)

ちなみに,Haskellだったら下みたいな順番でも書ける.

main = getContents >>= putStr . unlines . take n . lines

念のため,書き方及び考え方という観点での順番.
(関係ないけれど,"unline . take n "等の一部分を別の位置に書くことはできるのか疑問になった)

自信がないけれど,二つのコードは式の展開の順番は異なるけれど,式が評価される順番は同じだと思う.

... そもそも,不自然なコードになりそうだけど,RubyだってここにあるHaskellの例のように書けるんじゃないかな.
うーん,どんなことを話したんだろう.

wwwこれはwwwテラ勘違いかwww

これは,コードの読者の思考の流れかなのかな? ... 分からないよーorz