[表示 : 全て 最新50 1-99 101- 201- 301- 2chのread.cgiへ]
Update time : 06/13 19:39 / Filesize : 96 KB / Number-of Response : 378
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【アンチ】関数型言語は使えない【玩具】 2



62 名前:デフォルトの名無しさん mailto:sage [2012/03/01(木) 19:44:58.10 ]
haskellの遅延評価は、元々先行評価よりも遅い傾向にあるんだけどな・・・
(一部のみ、先行評価より速い)

そもそも、reverseが単方向リストに不利なわけだが・・・
とりあえず、main/print(IOモナド使った関数)以外の関数を自作してみた

ideone.com/15yhM

自分がHaskellに惚れたのは、IO関連以外は言葉遊びみたいな感じで自作出来るのが楽しいから
(rangeはもうちょっと作りこめたかも・・・)
速さよりも、その構造を調べるのが楽しい

data Natural = Zero | Succ (Natural) deraiving (Eq,Ord,Show,Read)

自然数の定義と、リストの定義が似ているのが分かる。
自然数は、その長さそのものが数字としての意味を持ち、リストは長さにも長さと言う意味はあるが、自然数との決定的な違いは、要素自体も値を持っているか?だけだと言うのが分かる


遅延評価生かしたプログラムなら、ファイル処理とかだろうけど、ideoneでファイルの読み込ませ方知らん(と言うか、在るのか?)
ので、一応、こんなのも作ってみた(1から1000000までの足し算の合計のリストを作って、先頭の10要素を表示)

ideone.com/insk7

簡約の様子を見てみると関数同士が絡み合って、一番外側の関数の終了条件のみで、他の関数の終了条件を満たして無くても、関数が終わるのが自然と理解できる

もちろん、最初から無駄の無い処理を書かれると負ける。foldllやmapみたいな、状態を次の再帰に引き摺らない様に書けば、スタック消費が抑えられるって言うだけで、Haskell自体の最適化は弱い








[ 続きを読む ] / [ 携帯版 ]

全部読む 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<96KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef