トップページ > プログラム > 2014年07月25日 > bB6D8lBK

書き込み順位&時間帯一覧

4 位/195 ID中時間01234567891011121314151617181920212223Total
書き込み数0020000000000000000022017



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
関数型プログラミング言語Haskell Part25

書き込みレス一覧

関数型プログラミング言語Haskell Part25
969 :デフォルトの名無しさん[sage]:2014/07/25(金) 02:25:37.16 ID:bB6D8lBK
>>965
>>966
えっそんな関数Haskellに無いですよね?

hoogleで出てこないです。(そしてhayooは何故か死んでる...)
関数型プログラミング言語Haskell Part25
970 :デフォルトの名無しさん[sage]:2014/07/25(金) 02:32:41.93 ID:bB6D8lBK
Haskellは遅延評価だから、レガシーな言語で言うところの、"インターフェイスに対してプログラミングせよ"
みたいな原則は、あんまし気にしなくていい、ってことですかね?
関数型プログラミング言語Haskell Part25
976 :デフォルトの名無しさん[sage]:2014/07/25(金) 20:36:28.81 ID:bB6D8lBK
>>973
>>975
Vector a を [a] に変換して使うのには(遅延評価のおかげで)定数オーダーの時間コストしかかからないけど、
オブジェクト指向で言うところの具象オブジェクトAを具象オブジェクトBに変換するのには、オブジェクトAの抱えてるデータをコピーしなければならないから、時間・空間の両面でコストがかかる。
オブジェクト指向ではインターフェイス(純粋仮想クラス)を使うことでこの問題を解決することが出来る。

できるだけ抽象に依存すべき、っていうのは正しい。
オブジェクト指向での設計は、まずインターフェイスを作ってからそれを実装する、って流れがベターだけど、
Haskellでの設計は、型クラスを最初に作るのがよい、ってわけじゃないと思う。
関数型プログラミング言語Haskell Part25
977 :デフォルトの名無しさん[sage]:2014/07/25(金) 20:56:09.87 ID:bB6D8lBK
Haskellでの設計、ってみんなどうやってるんだろう?

自分は
対象の問題領域を大まかに定めて、
・その問題を表現できる操作群を考える
・その操作群において閉じている代数的データ型Hogeを作る
・操作が満たすべきルール、Hoge則を考える
パフォーマンスが低いなって思ったら、Hoge則を外れないように、Hoge型の定義と操作の定義を修正する。

あるいは、
対象の問題領域を別の問題領域に帰着させる。リストとか、ツリーとか。グラフとか。
んで、がんばって糊を作る。
関数型プログラミング言語Haskell Part25
980 :デフォルトの名無しさん[sage]:2014/07/25(金) 21:21:46.57 ID:bB6D8lBK
>>978
型クラス≒(オブジェクト指向の)インターフェイス
ととらえています。
既存のデータ型を型クラスのインスタンスにできるけど、それが何の意味を持つのかがよくわかりません。
関数型プログラミング言語Haskell Part25
983 :デフォルトの名無しさん[sage]:2014/07/25(金) 21:52:08.58 ID:bB6D8lBK
>>982
なんか理解のレベルに差がある感じですね…

俺は今まで愚直に
抽象=インターフェイス,型クラス
と考えてたけど、言われると確かに、抽象的なモデルをオブジェクト指向で具象クラスにすることはよくありますね。関数型では、"対応関係"をインデックスで表現することも関数にすることも、Mapにすることもあるし。

なるほど。
関数型プログラミング言語Haskell Part25
985 :デフォルトの名無しさん[sage]:2014/07/25(金) 23:19:10.20 ID:bB6D8lBK
>>984
> 型クラスは静的型付けに特化した機能
そうなんですか?


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。