[過去ログ]
関数型プログラミング言語Haskell Part16 (978レス)
関数型プログラミング言語Haskell Part16 http://echo.5ch.net/test/read.cgi/tech/1317958045/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
226: デフォルトの名無しさん [sage] 2011/10/22(土) 19:56:50.82 >>223 何とかWin7の64bitでgtk2hsインストール完了しました 結論から言うと、gtk+の64bit版ではなく、>>218でダメと言われてた2.22で成功しました。。。 (手順はそれ以外は同じで、サンプルコードの動作確認も完了済み) 因みに、64bit版ではインストールに成功するものの、リンクでこけました これでgtk2hsの勉強が始められそうです ありがとうございました http://echo.5ch.net/test/read.cgi/tech/1317958045/226
227: デフォルトの名無しさん [sage] 2011/10/22(土) 21:33:29.29 >>186 楽しいね、これ。ずっとスレ覗くだけだったけど、久しぶりにhaskellしたくなってきたよ。 http://echo.5ch.net/test/read.cgi/tech/1317958045/227
228: デフォルトの名無しさん [sage] 2011/10/22(土) 21:36:15.30 last [1..1234567890] を早くする方法で悩み中。 リストの最後の数値は判ってるんだから、すぐに出力出来るはずなんだが… http://echo.5ch.net/test/read.cgi/tech/1317958045/228
229: デフォルトの名無しさん [sage] 2011/10/22(土) 21:41:00.81 >>228 > リストの最後の数値は判ってるんだから なぜ? http://echo.5ch.net/test/read.cgi/tech/1317958045/229
230: デフォルトの名無しさん [sage] 2011/10/22(土) 21:42:14.51 >>228 リストは先頭からしか読めないからな 最後の数値を即座に取り出したいなら別のデータ構造を考える必要がある http://echo.5ch.net/test/read.cgi/tech/1317958045/230
231: デフォルトの名無しさん [sage] 2011/10/22(土) 21:57:41.34 >>229 既にソースに書いてある。 先頭から見て行かないと判らない、というならそれはHaskellの出来の問題じゃないの? http://echo.5ch.net/test/read.cgi/tech/1317958045/231
232: デフォルトの名無しさん [sage] 2011/10/22(土) 22:02:58.14 >>231 リストのデータ構造の性質 haskellじゃなくても、リストを使えば先頭からしか辿らない http://echo.5ch.net/test/read.cgi/tech/1317958045/232
233: デフォルトの名無しさん [sage] 2011/10/22(土) 22:07:14.12 ハスケルの配列はO(1)なんだっけ? http://echo.5ch.net/test/read.cgi/tech/1317958045/233
234: デフォルトの名無しさん [sage] 2011/10/22(土) 22:25:23.49 >>231 たとえば [1..3] は 1 : (2 : (3 : [])) であり、 「リストを構成するデータ型」の値だ そして、 : や [] はこのデータ型の「値構築子」だ( : は中置値構築子) last 関数は、last [] = errorEmptyList "last"; last (x:xs) = ・・・ という形のパターンマッチを行う関数だ last [1..3] は last (1: (2 : (3 : []) なので、 (x:xs) にパターンマッチし、x=1、xs=(2 : (3 : [])) と束縛する リストに限らず、データ型の値を作ってる値構築子の引数(この場合は 1 や 2 など)は、 このようにパターンマッチさせて値構築子を剥がす事でしか参照できない で、リスト 1 : (2 : (3 : [])) がこのようなネスト構造を成している以上、 ネスト構造を「順に剥がしていく」ことでしか中の値は参照できない ちなみに、f (_:_:x:_) = という関数で f [1..3] などとして一気に x=3 と束縛しようとしても、 内部で順に値構築子を剥がす処理をしてパターンにマッチするかを調べるから同じ事 これを 「Haskellの出来」 というのなら、そうだね、としか言いようがない http://echo.5ch.net/test/read.cgi/tech/1317958045/234
235: デフォルトの名無しさん [sage] 2011/10/22(土) 22:55:21.45 >>234 haskellの出来じゃない 配列と違って、リストはメモリ上に連続して並んでる保証はない だから、先頭から順々に次に要素のアドレスを参照していくしかない 配列なら、連続して並んでるから、先頭から要素のサイズをステップ数として、希望の位置までアドレスの参照先をずらせば良い c言語でも同じ事 (haskellで配列使った事ないから分からんが、配列と言うデータ構造の性質としてはO(1)になるはず) http://echo.5ch.net/test/read.cgi/tech/1317958045/235
236: デフォルトの名無しさん [sage] 2011/10/22(土) 22:56:21.45 x要素のサイズ o要素一つのサイズ http://echo.5ch.net/test/read.cgi/tech/1317958045/236
237: SCHEME餃子 ◆8X2XSCHEME [sage] 2011/10/22(土) 23:06:30.13 >>231 構文木の段階の情報と、実行時の段階のマシンコード (バイトコード) ではレイヤが違う話。 レイヤをまたいでうまいことやれば…というのは個別の実装の最適化をがんばってもらうしかない。 http://echo.5ch.net/test/read.cgi/tech/1317958045/237
238: デフォルトの名無しさん [sage] 2011/10/22(土) 23:15:23.45 last [1..3] くらいならコンパイル時に展開してもいい気がするけど それでじゃあ、この最適化があれば実装の出来がいいかって言われると うーん http://echo.5ch.net/test/read.cgi/tech/1317958045/238
239: デフォルトの名無しさん [sage] 2011/10/22(土) 23:25:42.57 >>238 うん? ghciの話じゃないのか ghcにO2オプション付ければ積極的に最適化されるから、 last [1..3] = 3 みたいに最適化されてんじゃないの? http://echo.5ch.net/test/read.cgi/tech/1317958045/239
240: デフォルトの名無しさん [sage] 2011/10/22(土) 23:44:29.49 >>239 少なくとも GHC 7.0.3 ではされません http://echo.5ch.net/test/read.cgi/tech/1317958045/240
241: デフォルトの名無しさん [sage] 2011/10/22(土) 23:47:33.53 >>186が楽しいって感覚は分からないな Haskellや関数型プログラミングらしくなくて、むしろ気持ち悪いくらいなんだけど http://echo.5ch.net/test/read.cgi/tech/1317958045/241
242: デフォルトの名無しさん [sage] 2011/10/22(土) 23:54:35.79 >>186 俺は、楽しいかどうかというより、 そういう発想が他のどういうところに活かされるのか気になる http://echo.5ch.net/test/read.cgi/tech/1317958045/242
243: デフォルトの名無しさん [sage] 2011/10/22(土) 23:56:32.37 FP的だから関数型言語的と言っていいと思う。 http://echo.5ch.net/test/read.cgi/tech/1317958045/243
244: デフォルトの名無しさん [sage] 2011/10/23(日) 00:00:25.87 >>243 >>241 はFP的ではないと感じてるわけだから、 どの辺りがFP的か簡単にでも説明してあげないと堂堂回りになるよ http://echo.5ch.net/test/read.cgi/tech/1317958045/244
245: デフォルトの名無しさん [sage] 2011/10/23(日) 00:03:30.59 http://en.wikipedia.org/wiki/FP_(programming_language) の事ってのは通じてる? Bird先生の本もこの系譜になると思うけども。 http://echo.5ch.net/test/read.cgi/tech/1317958045/245
246: デフォルトの名無しさん [sage] 2011/10/23(日) 00:25:49.78 通じないだろw 普通はプログラミングパラダイムの方を思い浮かべる http://echo.5ch.net/test/read.cgi/tech/1317958045/246
247: デフォルトの名無しさん [sage] 2011/10/23(日) 00:30:01.52 FPと言えばBackus先生のFP! Function Programmingの略! これが関数道の正しい道! http://echo.5ch.net/test/read.cgi/tech/1317958045/247
248: デフォルトの名無しさん [sage] 2011/10/23(日) 00:32:44.35 どっちでもいいけど >>186のどこが関数的? http://echo.5ch.net/test/read.cgi/tech/1317958045/248
249: デフォルトの名無しさん [sage] 2011/10/23(日) 00:41:48.58 逆にどこが違う? http://echo.5ch.net/test/read.cgi/tech/1317958045/249
250: デフォルトの名無しさん [sage] 2011/10/23(日) 01:26:52.91 >>248 じゃないけど、おれも >>186 のどこが関数的か分からん 関数的とも手続き的手も言えん、なんとも分からん代物 http://echo.5ch.net/test/read.cgi/tech/1317958045/250
251: デフォルトの名無しさん [sage] 2011/10/23(日) 01:42:08.77 こんなの関数的な要素は全く無いだろ mainの最後を[2..100]と変えたらおかしくなることからして関数的でないことが分かる それに関数的かどうかとは別に、プログラムとしても洗練されてない fizzとbuzzの空文字列や関数fに数値を渡す設計はどうにかならなかったのかと思うし fの中で文字列の比較をしてるのも酷い Bird先生?難しい本を薦める前に添削してやれよと… http://echo.5ch.net/test/read.cgi/tech/1317958045/251
252: デフォルトの名無しさん [sage] 2011/10/23(日) 04:25:14.59 BackusのFPはポイントフリースタイルのイメージだね。 Bird先生は別に要素レベルの演算までリストでやれと言ってるわけではないと思う。 lift n = (n,"") fizz (n,s) = (n,s ++ if n `mod` 3 == 0 then "fizz" else "") buzz (n,s) = (n,s ++ if n `mod` 5 == 0 then "buzz" else "") fizzbuzz xs = map (buzz . fizz . lift) xs くらいでも関数的と言っていいんじゃないか。 http://echo.5ch.net/test/read.cgi/tech/1317958045/252
253: デフォルトの名無しさん [sage] 2011/10/23(日) 04:54:09.21 それ以前に、センスがあるとは思えないんだが。奇抜さはあるにしても。 http://echo.5ch.net/test/read.cgi/tech/1317958045/253
254: デフォルトの名無しさん [sage] 2011/10/23(日) 07:27:28.91 >>251 洗練されたコード早く http://echo.5ch.net/test/read.cgi/tech/1317958045/254
255: デフォルトの名無しさん [sage] 2011/10/23(日) 07:46:21.09 >>254 >>252 http://echo.5ch.net/test/read.cgi/tech/1317958045/255
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 723 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.009s