10周年のSPコンテンツ!
57
Takashi Miyamoto @tmiya_
オブジェクト指向はOOPの他にOOA,OODなど上流工程向けの方法論があるのだが、関数型言語についてもFPの他にFA,FDがあるのだろうか?誰か適切な論文/教科書とか知りませんか?
Ikegami Daisuke @ikegami__
探してみます。でも強い型付けか、弱い型付けかで、まるっきり異なるでしょう RT @tmiya_: オブジェクト指向はOOPの他にOOA,OODなど上流工程向けの方法論があるのだが、関数型言語についてもFPの他にFA,FDがあるのだろうか?誰か適切な論文/教科書とか知りませんか?
Ikegami Daisuke @ikegami__
@tmiya_ 個人的な感想ですが、強い型付けのプログラミング言語で開発を行う場合、実装の前に、全体の型と部品の型を決めてつくります。だから、型に関する洞察が必要でしょう。逆に、弱い型付けのプログラミング言語では、型を気にせずに、どんどん分割統治で仮実装/コメントすると思います
Ikegami Daisuke @ikegami__
理論があるかというと、型付けの強いプログラミングでは "Type-level programing" という話があります。Haskell だと、これ : http://bit.ly/aJwFlc
Ikegami Daisuke @ikegami__
型付けの弱い関数プログラミングは面白いけど、設計とかするひといるのかなー(とかいう)。Emacs-Lisp は実装を思いついたらそれを書いて eval のくりかえしですね、ぼくは。
Takashi Miyamoto @tmiya_
ありがとうございます。Haskell, OCamlみたいな強い型付け言語を想定しています。OOだと例えば名詞をクラスに動詞をメソッドにみたいな方法論がありますが、関数型にもそういう分析手法はあるのかなぁ、と。クラスは型に置き換え? QT @ikegami__ 探してみます。
Ikegami Daisuke @ikegami__
関数プログラミングは 1. 小さな部品にわけて合成(分割統治) 2. 高階関数による抽象化 3. ジェネリックプログラミング(マクロとか) が、設計の三大要素ですかね(あくまで個人的な感想)
Ikegami Daisuke @ikegami__
HaskellやOCamlでは一級市民が関数ですので(データも引数を持たない関数)、関数の命名は、データなのか、データ変換なのか、はたまた関数を受け取ってひねるなどのアクション、というように何をするのかで決めるのだと思います。名前を。
Takashi Miyamoto @tmiya_
エンタープライズ系の人々に関数型言語を受け入れさせる(その必要があるかは別として)場合には、顧客業務の分析手法みたいなものが必要だろうなぁ、と。
Keigo Imai @keigoi
.@ikegami__ @tmiya_ 関数型のアーキテクチャといえば、GoogleのMapReduceを思いつきます。ああいう風に関数型の設計というのが他にもないかなぁと思っています
おしいれのぼうけん @osiire
はい、formal method的な感じです。そういう方向の適用範囲を広げていくことが望ましいと思っています。@psychokinetica formal method 的なお話ですか?
Takashi Miyamoto @tmiya_
Design Patternみたいな話だと、FPのパターンマッチがあればvisitor patternいらないみたいな話は幾つかあるんですが。 @keigoi @ikegami__ ああいう風に関数型の設計というのが他にもないかなぁと思っています
Keigo Imai @keigoi
.@tmiya_ ごくプログラミング寄りの話ですね。compositeもinterpreterも要らんですよね。逆に、継承みたいなことを表現しようとしたらpolymorphic variantとか型クラスみたいなのが要ると。 型クラスのためのデザインパターンはアリかも?
Keigo Imai @keigoi
expression problemの解みたいな話こそが、真にパターンと呼べると思うのだけど。
Keigo Imai @keigoi
OCamlではもちろんpolymorphic variant使う。しかしHaskellでexpression problemを解くって?と思い軽くググったら"Haskell is not not ML"というのがヒットしたので読んでる http://bit.ly/38xMEk
Keigo Imai @keigoi
やっぱりalgebra of programmingは何やるにしても読んでおかないと駄目ね。がんばろう
Keigo Imai @keigoi
それ構造的サブタイピングやないのか! fundepsもなし、型推論はどうなるのか
Jacques Garrigue @garriguejej
@keigoi expression problemならocamlが最強でしょう。解き方もいっぱい。http://j.mp/aib4hb
おしいれのぼうけん @osiire
型設計プログラミングができるのは静的型付け言語だけ。型無しや動的型付け言語ではむり。
おしいれのぼうけん @osiire
functorをfunctorでガシガシ適用していると何をしているのか時々わからなくなる。
mzp @mzp
ちょっと前にTwitter上であった「関数型言語におけるデザパタ」の議論を追おうと思ったら、Togetterにまとめてあったでござる。やったね。: Togetter - まとめ「関数型言語でのデザイン手法」 http://bit.ly/bOsomD
mzp @mzp
「タプルが3項組を越えそうになったらレコードに置き換えよう」「再帰を書いたらfoldで書き直せないか検討しよう」「やめどきが分からない計算は無限リストで表現して後でnthしよう」あたりを思いついたけど、これはどちらかというとスタイルの話か。 > 関数型言語のデザパタ
Keigo Imai @keigoi
もちろん読みました! (リンクがおかしいので再投稿) RT @garriguejej @keigoi expression problemならocamlが最強でしょう。解き方もいっぱい。http://bit.ly/2RHy
mzp @mzp
ボクも読みました! すばらしいテクニックだと思います。 RT @keigoi: もちろん読みました! RT @garriguejej @keigoi expression problemならocamlが最強でしょう。解き方もいっぱい。http://bit.ly/2RHy
mzp @mzp
http://bit.ly/9LNn1g は就活で任天堂の試験を受けにいく電車の中で読んでた記憶がある。今考えると試験勉強しとけよ、って話ですよね
残りを読む(131)

コメント

Takashi Miyamoto @tmiya_ 2010年5月30日
updateしました。誰でも編集出来るので気がついた方はupdateして下さい。
mzp @mzp 2010年5月30日
主観で大事そうなところをデコりました!
Takashi Miyamoto @tmiya_ 2010年5月31日
updateしました。誰でも編集可能です。
mzp @mzp 2010年5月31日
@camlspotterさんの発言追加しました。
KOYAMA Youichi @koyama41 2010年5月31日
notogawaさん、kibayosさんのtweetを追加しました。
KOYAMA Youichi @koyama41 2010年5月31日
さらにnotogawaさんの発言があったのでそれも追加
Takashi Miyamoto @tmiya_ 2010年6月1日
update。大体書き込みも収束したかな。皆様どうもありがとうございました。
室町幕府十代将軍 @oskimura 2010年9月17日
Let Orver Lambda にはLispにはデザパタなど必要ない! パタンがあらわれるものマクロで記述する!っていうふうに書いてあった。
Takashi Miyamoto @tmiya_ 2010年10月7日
最近また話題になっていた様なので昔のtogetterに追記
MATSUOKA Hiroshi @matsu_hiroshi 2011年2月9日
楽しい話多いけど本題の『設計パターン』が殆ど出てこない(w 関数型のバイアスって結局パターン作成言語だもん!(ww 労力の半分以上は問題領域向けのパターン(= ミニ言語)書いてる気がするのは私だけかしらん?
原幌鰭晴 @P_tan 2015年2月4日
関数型にフィットするのは、単純にデータフロー図だろうなーと思っている。
ログインして広告を非表示にする
ログインして広告を非表示にする