[過去ログ]
関数型プログラミング言語Haskell Part16 (978レス)
関数型プログラミング言語Haskell Part16 http://echo.5ch.net/test/read.cgi/tech/1317958045/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
284: デフォルトの名無しさん [sage] 2011/10/27(木) 12:12:07.98 発想を広くとか勘違いしてるやついるな 発想はよさだろ 発想が狭くても良ければいい お前みたいなやつはクソ 海外旅行経験300回未満のゴミが "欧米では〜〜、海外では〜〜、視野を広める、心を広く、発想を広く、世界は広い、井の中の蛙、まだまだ甘かった 日本人は〜、コミュニケーションは大事、むこうでは〜〜、ボブがよ!ヘイ!ジョンとかブログに書く馴れ馴れしく” とかほざいてるのとおなじ気持ち悪いんだよゴミ なあゴミ http://echo.5ch.net/test/read.cgi/tech/1317958045/284
285: デフォルトの名無しさん [sage] 2011/10/27(木) 12:15:28.51 質問です。 海外旅行をすればHaskellがバリバリ書けるようになりますか? http://echo.5ch.net/test/read.cgi/tech/1317958045/285
286: デフォルトの名無しさん [sage] 2011/10/27(木) 12:31:24.60 >>284 良い発想かどうかは、誰がどうやって判断するんだろ。。。 http://echo.5ch.net/test/read.cgi/tech/1317958045/286
287: デフォルトの名無しさん [sage] 2011/10/27(木) 12:32:19.36 本当久々だ http://echo.5ch.net/test/read.cgi/tech/1317958045/287
288: デフォルトの名無しさん [sage] 2011/10/27(木) 12:39:59.83 >>286 そんなのは世界中のHaskellに関わり、 かつのその発想に関わる人間みんなが判断していくんだろ そして、大多数の人に良い発想だと認められれば、 その発想が世の中に認められているということだ ごく普通の当たり前のことだと思うが、そんなに疑問に思うことか http://echo.5ch.net/test/read.cgi/tech/1317958045/288
289: デフォルトの名無しさん [sage] 2011/10/27(木) 12:49:24.80 コテが付いて無くてもフィルタリング出来るパーサーで、スレがすっきりした。 パーサー実装はHaskellの練習としては手頃なのでお奨め。 http://echo.5ch.net/test/read.cgi/tech/1317958045/289
290: デフォルトの名無しさん [sage] 2011/10/27(木) 12:56:12.28 >>279 これを否定されてそんなに腹が立ったのかいw http://echo.5ch.net/test/read.cgi/tech/1317958045/290
291: デフォルトの名無しさん [sage] 2011/10/27(木) 12:57:24.90 パーサとはいったい http://echo.5ch.net/test/read.cgi/tech/1317958045/291
292: デフォルトの名無しさん [sage] 2011/10/27(木) 13:00:13.59 >>290 それより「発想」ってのが何かのトラウマのスイッチを押してしまったらしいよ http://echo.5ch.net/test/read.cgi/tech/1317958045/292
293: デフォルトの名無しさん [sage] 2011/10/27(木) 13:01:52.27 関数型言語がいつまでもキチガイ誘蛾灯みたいなポジションなのも困るね http://echo.5ch.net/test/read.cgi/tech/1317958045/293
294: デフォルトの名無しさん [sage] 2011/10/27(木) 13:04:54.29 電球の外に群がる事があっても、電球の中にまでは入ってこられまい。 http://echo.5ch.net/test/read.cgi/tech/1317958045/294
295: デフォルトの名無しさん [sage] 2011/10/27(木) 13:17:59.98 大発見の相手してやんないと拗ねる奴ってどこの板にもいるけど 全部一緒なんじゃなかろうな http://echo.5ch.net/test/read.cgi/tech/1317958045/295
296: デフォルトの名無しさん [sage] 2011/10/27(木) 13:36:35.90 >>293 X: 関数型言語がいつまでもキチガイ誘蛾灯みたいなポジションなのも困るね O: ハスケルがいつまでもキチガイ誘蛾灯みたいなポジションなのも困るね http://echo.5ch.net/test/read.cgi/tech/1317958045/296
297: デフォルトの名無しさん [sage] 2011/10/27(木) 19:14:05.00 >>293-294 文学はいいので工学の話してください http://echo.5ch.net/test/read.cgi/tech/1317958045/297
298: デフォルトの名無しさん [sage] 2011/10/27(木) 23:19:35.93 フーリエ変換への変なアプローチなら、できるかどうかは別としてありそうではあるけど。 http://echo.5ch.net/test/read.cgi/tech/1317958045/298
299: デフォルトの名無しさん [sage] 2011/10/27(木) 23:47:18.79 >>298 「できない」アプローチが「ある」っていう概念が理解できないから説明してくれろ http://echo.5ch.net/test/read.cgi/tech/1317958045/299
300: デフォルトの名無しさん [sage] 2011/10/28(金) 00:14:33.39 >>295 >全部一緒なんじゃなかろうな 284〜296まで一人で自演乙 でも、こんな過疎スレで一時間ちょいで十レス以上とか、 もうちょっとリアリティってヤツを考えたほうがいいね。 http://echo.5ch.net/test/read.cgi/tech/1317958045/300
301: デフォルトの名無しさん [sage] 2011/10/28(金) 02:56:26.22 Haskellでプロトタイピングをするとき、ここから作ってく、こうやって作っておけば後からの変更に強い、 みたいな作法って持ってます? ある組成式を受けとったら、その分子の平均質量とかマススペクトルとかを返してくれるような プログラムを書いてみようかと思ったんだけど、まず基本となる原子のデータ型から作っていって、 data Atom = Atom { abbr::Char, abundance::Distributions } type Distributions = [(Int,Double)] とか定義しておいて、average :: Atom -> Doubleやspectrum :: Atom -> (Int -> Double) みたいな関数を作り、組成式はtype Molecule = [(Atom,Int)]としてみようか、と考えています。 で、Atomを拡張してname::Stringみたいな値も格納しておこうか、と思いついたとき、 Atom型の値の中身をパターンマッチで分解している部分は全て書き直さなければならなくなります。 変更に弱いから、手探りでコーディングをしているときはパターンマッチによる分解は使うべきじゃない、ということで良いのでしょうか。 http://echo.5ch.net/test/read.cgi/tech/1317958045/301
302: デフォルトの名無しさん [sage] 2011/10/28(金) 03:18:36.06 >>301 とりあえず、その個別の問題に対しては、 data T1 = T1 { c :: Char } data T2 = T2 { d :: Char, s :: String} f T1{c = 'a' } = "c is 'a'" f T1{c = c } = "c is not 'a': " ++ show c g T2{d = 'a' } = "d is 'a'" g T2{d = d } = "d is not 'a': " ++ show d 以上のパターンを用いることによって対処できる さらに、 h t2@T2{d = 'b' } = t2{d = 'c', s ="foo" } のようにasパターンと組み合わせることものできるから、かなりの柔軟性が確保できるはず。 http://echo.5ch.net/test/read.cgi/tech/1317958045/302
303: 302 [sage] 2011/10/28(金) 03:20:39.58 ごめん。捕捉。 T1とT2は、別の型というよりも、変更前の型と変更後の型をシミュレートしていると考えて。 だから、このコードではcとdは別の識別子だけど、変更前と変更後で同じ識別子にすることができる。 http://echo.5ch.net/test/read.cgi/tech/1317958045/303
304: デフォルトの名無しさん [sage] 2011/10/28(金) 07:47:46.60 >>301 > Atom型の値の中身をパターンマッチで分解している部分 ここが元凶じゃないかな Atom型の値の中身をパターンマッチで分解するのなら、 何の為に abbr 関数や abundance 関数を定義したの? パターンマッチで分解するんじゃなく、 これらの関数を使って中身を取得すべきじゃないの? パターンマッチだと型の構成を固めちゃうよ ちなみに、見た目よく似た問題に Expression Problem というのがある data X = A | B という型をパターンマッチで A B 仕分けしている関数が多くあり、 そこに新たに C という値構築子を追加したいが、修正すべき関数が多くて大変 なんとか楽にしたい、ついでにできれば再コンパイルしたくない そういう場合なら、たとえばこことか日本語で分かりやすい http://d.hatena.ne.jp/maoe/20101214/1292337923 http://echo.5ch.net/test/read.cgi/tech/1317958045/304
305: デフォルトの名無しさん [sage] 2011/10/28(金) 08:16:42.39 >>301 普通はデータ構築子をmodule外に非公開にすることで 内部構造を隠匿する よくあるOOP言語ではclassが抽象データ型の単位だけど Haskellだとmoduleになる http://echo.5ch.net/test/read.cgi/tech/1317958045/305
306: 301 [sage] 2011/10/28(金) 09:25:56.34 >>302すいません、パターンマッチでの分解に、record syntaxを含めていませんでした。 haskellの入門書などではdata X = MkX Int Double Charなどとしておいて、 f (X i d c) = ...と記述することが「できる」とあったのですが、これって便利なのか?と疑問に思ったのです。 >>304確かにアクセッサ関数を定義しているので、型に何かを追加する可能性がある場合は 柔軟性を保てるのですが、例えば存在比を(Int,Double)のリストで表すよりもData.Mapで表す方がベターだと思った場合、 やっぱり変更先が多くなりそうになって嫌だなあと思った次第でして。 >>304のリンク先の方法がスマートに見えるので試してみたいと思います。 最終的には原子に限らず、平均値と分布を出せるようになりたいので、averageやspectrumをAtomだけに制限するのは良い手じゃなさそうです。 http://echo.5ch.net/test/read.cgi/tech/1317958045/306
307: デフォルトの名無しさん [sage] 2011/10/28(金) 12:53:34.49 >>306 > 例えば存在比を(Int,Double)のリストで表すよりもData.Mapで表す方がベターだと思った場合 そういう場合は、Data.Map 型を使ったコンテナに対するアクセス関数を公開して、 そのコンテナ内部で Data.Map 型を使っていることは隠蔽しておく >>305 も同じ様なことをアドバイスしている こうやって、データとそのユーザとの間にインターフェースを設けるのは、 Haskell に限らず、まず間違いなく全ての言語で共通する考え方 CICP 的に言えば「抽象の壁」だ ちなみに、>>304 の後半で紹介した Expression Problem は、 少なくとも >>301 から読み取れる問題とは別ものと思われる (応用できるかどうかは分からないけど) http://echo.5ch.net/test/read.cgi/tech/1317958045/307
308: デフォルトの名無しさん [sage] 2011/10/28(金) 12:54:58.72 >>307 すまん 誤) CICP 的に言えば 正) SICP 的に言えば http://echo.5ch.net/test/read.cgi/tech/1317958045/308
309: デフォルトの名無しさん [sage] 2011/10/28(金) 18:25:33.57 ようやく少しモナドの感覚がつかめた。あれって世界を分けてて、その世界の中 で作業をしていくための工夫という感じだな。ってね。安全な作業をするには必 要なんだってのもようやくわかった。 同時に感覚的なイメージでモナドを上手に例えて伝えるようなものがあまりない のかもとも思ったかな。水中で普通のデジカメで撮影をするには防水ケースの中 に入れて使うけど、あの防水ケースっぽい働きなんだなってね。そんなアナロジー を想像してしまったかな。 http://echo.5ch.net/test/read.cgi/tech/1317958045/309
310: デフォルトの名無しさん [sage] 2011/10/28(金) 19:10:16.64 >>309 > 同時に感覚的なイメージでモナドを上手に例えて伝えるようなものがあまりない > のかもとも思ったかな。 確かにね hage :: [Int] hage = do x <- [1..5] when (x == 3) (fail "discard") return x こういうのだと、どの世界とどの世界に分けてるのか曖昧だし 明確に分けられたとしても、その世界に何かを閉じ込めているのとも違う気がする http://echo.5ch.net/test/read.cgi/tech/1317958045/310
311: デフォルトの名無しさん [sage] 2011/10/28(金) 20:14:47.39 リストモナド自体が分岐した世界を表現してるからな http://echo.5ch.net/test/read.cgi/tech/1317958045/311
312: デフォルトの名無しさん [sage] 2011/10/28(金) 20:59:44.73 >>311 いや、たがら、そのリストモナドが分けた2つの世界は何と何か という辺りが自分では上手く説明できないなぁと http://echo.5ch.net/test/read.cgi/tech/1317958045/312
313: デフォルトの名無しさん [sage] 2011/10/28(金) 21:06:31.22 do内の世界はdoの流儀に従ってる。だけど、do外の世界はdo内のことには 結果を渡される以外無関係ってと事だろう? http://echo.5ch.net/test/read.cgi/tech/1317958045/313
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 665 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.013s