- 1 名前:デフォルトの名無しさん [04/05/04 14:53]
- Lisp Scheme ML Haskell FP Mirranda など
関数型言語について話し合いましょう 関連スレ 関数型プログラミング言語ML pc3.2ch.net/test/read.cgi/tech/1012445015/ 関数型プログラミング言語Haskell pc3.2ch.net/test/read.cgi/tech/1013846140/ LISP Scheme Part6 pc3.2ch.net/test/read.cgi/tech/1031560687/ Emacs Lisp pc3.2ch.net/test/read.cgi/tech/1004551074/
- 630 名前:デフォルトの名無しさん [2007/05/06(日) 11:48:08 ]
- おい!気づいたんだが、Excelって関数型言語じゃね?
- 631 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 14:21:34 ]
- >>630
"Spredsheet functional programming" の話? ずいぶん前にも似たような話があった気がするけど
- 632 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:16:24 ]
- Comegaが自然消滅したのを見ればF#が公式にVS一門に加わるまでは手なんか出せるはずが無い
- 633 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:30:08 ]
- >>630
あれは関数型言語ではなく、エンドユーザコンピューティングだ。
- 634 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:35:07 ]
- 関数性とエンドユーザ性は直交しないの?
- 635 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 20:55:07 ]
- 関数の無い言語って見たことないんだが
- 636 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 21:13:40 ]
- 機械語やBrainfuckやPrologには関数がないんじゃない?
- 637 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 22:05:40 ]
- 結構いっぱいあるよ
- 638 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 22:09:43 ]
- N88-BASIC とか
- 639 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 01:18:34 ]
- Fortressって関数型言語?
- 640 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 01:51:20 ]
- Prolog には関数あるよ。組み込みだけど。
- 641 名前:デフォルトの名無しさん [2007/06/28(木) 06:49:48 ]
- まだあったのかこのスレ
- 642 名前:デフォルトの名無しさん [2007/07/01(日) 15:20:52 ]
- 関数型言語、あまりに動きがないな。
新しいことやってくれよ。
- 643 名前:デフォルトの名無しさん mailto:sage [2007/07/05(木) 06:00:25 ]
- 広まる前に枯れたから難しいな
- 644 名前:デフォルトの名無しさん [2007/08/29(水) 18:43:31 ]
- 私は普段 Python を使っています。
関数型プログラミングにおける reduce が分かりません。 "広い意味において"どのように理解しておけばよいのでしょうか? 説明のためにちょっと定義: A(f,[0,1,2,3,4]) => f(0,f(1,f(2,f(3,4)))) B(f,[0,1,2,3,4]) => f(4,f(3,f(2,f(1,0)))) C(f,[0,1,2,3,4]) => f(f(f(f(0,1),2),3),4) D(f,[0,1,2,3,4]) => f(f(f(f(4,3),2),1),0) (1). 正直 reduce だけではどれなのか分からない。(また fold も曖昧である)。 (2). fold は reduce と同義。 (3). 普通は (reduce_r == fold_r == A) , (reduce_l == fold_l == C) で通じている。 (4). f(x,y)==f'(y,x) なら A(f)==D(f') になるので、結局のところ A,D を区別しない。(同様にB,Cも区別しない)。 (5). A,D と B,C は実装の問題だと考えている。
- 645 名前:デフォルトの名無しさん [2007/10/03(水) 23:13:32 ]
- foldとreduceは違うんじゃないの?
fold:リスト要素の型との戻り値の型はちがっても良い reduce:同じ じゃない?
- 646 名前:デフォルトの名無しさん mailto:sage [2007/10/05(金) 08:47:15 ]
- 俺もほぼ同義でいいと思うが、あえて分ければそうかもしれんね。
別の表現をすれば、最初の項を別途与える=fold、リストからとる=reduce ?
- 647 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 16:20:56 ]
- どうもありがとうございます。
ニュアンスに微妙な違いがあるんですね。
- 648 名前:デフォルトの名無しさん [2007/10/09(火) 23:01:13 ]
- >>642
あたらしいことwww ttp://www.blue.sky.or.jp/grass/
- 649 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 00:01:42 ]
- スゲエ、笑けるw
- 650 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 02:07:38 ]
- >>648
なんぞこれwwwww
- 651 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 14:19:10 ]
- ドキュメントが英語なのが最大の笑い所な気がするw
- 652 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 15:48:39 ]
- >>648
これはワラタ。 けど、手で書きにくすぎる上に機械生成が簡単過ぎるので、 変態言語としては微妙な気がする。 あと、公式の「はいはいわろすわろす」を逆アセしてみたら、 サイズを節約するためのトリックが使ってあって面白かった。 ttp://up.uppple.com/src/up7032.txt
- 653 名前:デフォルトの名無しさん mailto:sage [2007/11/01(木) 01:50:17 ]
- scalaってどうよ?
- 654 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 19:12:40 ]
- Genericsの互換性がないのが痛すぎる>Scala
F#のほうがよさげ。
- 655 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:31:47 ]
- JavaのGenericsと互換性がないってこと?
それはちょっとキツいかも。 思えば generic な HashMap も java.util のそれではなく scala.collection.mutable.HashMap だったり… しかし今Scala触ってて Option型と for記法に感動したんだが。 val o2 = new HashMap[int,int](); o2(1) = 2 for(i<-o2.get(1)) {println(i)} for(j<-o2.get(2)) {println(j)} まんまMaybeモナドやん! Scala最強
- 656 名前:デフォルトの名無しさん mailto:sage [2007/11/14(水) 14:35:25 ]
- 書き忘れた。 Scala かじらないと何のことかわからんな。
o2(1) = 2 for(i<-o2.get(1)) {println(i)} // 2が出力される for(j<-o2.get(2)) {println(j)} // 何も出力されない (エラーにならない) for(i<-o2.get(1); j<-o2.get(2)) {...} // j の束縛に失敗するので何も出力されない (エラーにならない) まじで Scala の範囲内なら NullPointerException 撲滅できそう。 既存のコード書き直すと Option型だらけになる場合もありそうだけど。 それだけに、 asInstanceOf の戻り型をなぜ Option 型にしなかったのか理解に苦しむ…
- 657 名前:デフォルトの名無しさん mailto:sage [2007/11/15(木) 23:11:06 ]
- Scala わかんないけど、それ単に key = 2 のリストを返してるだけちゃうん?
- 658 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 21:16:55 ]
- ハッシュの戻り値が Option に包まれているのが良いんです。
Javaだと null かもしれない Integer 型を扱う必要があるけど、 Scala なら Option[int] みたいな感じで、 無効な値を含む場合を陽に切り分けることができるっす。 これだけだと、無効な値を含むかどうかをチェックしなきゃだめでめんどくさいんですが、 Haskell でいう Maybe モナドみたいな書き方がサポートされているので、if文が必要なくなり楽ができます。 しかも JVMで動く型付きの関数型言語。ちょっと良さげだと思うです。 >>654 みたいな欠点はあるけど。
- 659 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 13:06:09 ]
- そのうちoption型は、どの言語も持つようになって、
それ前提にライブラリ構成されるようになるかもね。 C++もboost::optionってのがある。
- 660 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 07:18:16 ]
- つまりfailure-oblivious computingってやつ?
- 661 名前:デフォルトの名無しさん [2008/03/16(日) 17:25:51 ]
- 組み込み用にクロス開発できる関数型言語処理系ってありますか?
具体的に言うと、ARMやMIPS-RのGCCでスタティックリンクできるものがあれば 紹介して頂けないでしょうか。
- 662 名前:デフォルトの名無しさん mailto:sage [2008/03/16(日) 20:58:12 ]
- optionalって.NETでいうとNullableみたいなもの?
- 663 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 03:39:13 ]
- nullでもnilでもなく、Noneですがそうです。
関数型言語的に言うと、domianがliftingされてるわけです。
- 664 名前:デフォルトの名無しさん mailto:sage [2008/03/17(月) 10:54:19 ]
- どみあん
- 665 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 12:25:53 ]
- 何度も出た話題かもで恐縮だけど、関数型言語の位置付けってこれからどうなっていくの?
手続き型より巨大になっていくか、融合していくか、今のままなのか。
- 666 名前:デフォルトの名無しさん mailto:sage [2008/04/01(火) 13:37:07 ]
- 未来のことなんてわかんねーyp
- 667 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 01:18:44 ]
- 関数型言語が本流になることはないでしょうが、
プログラムに参照の透明性があるのは手続き型言語でも好ましいことなので、 関数型言語で産み出された種々の機構が 手続き型言語に結び付けられるのではないでしょうか。
- 668 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 04:15:20 ]
- 50年間そうだったのだからそうだろう。
- 669 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 07:26:36 ]
- 実際そんな感じだよな。
- 670 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 10:39:27 ]
- 手続き型言語では簡単にできることが、
純粋関数型言語では困難なことがある。 その困難に立ち向かって獲得した手法は、 他の言語でも極めて有益なことがある。 不自由さの中で獲得した手法がきわめて豊穣である、 これは数学基礎論で起っていることと同じである。
- 671 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 10:51:01 ]
- 関数型言語はきっと本流になるよ
主流の言語は確実にこっちに向かってる 少なくとも、そう信じないとやってられない
- 672 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 10:52:43 ]
- 関数型言語は前と同じところに立っているのにな。
- 673 名前:デフォルトの名無しさん [2008/04/06(日) 10:16:39 ]
- 関数型って逐次処理は一切ないの?
それとも数学的に(ラムダ計算で?)合成可能な関数オブジェクトを持った 普通のプログラミング言語になるの?(つまりc#とか既に近い所にあるのか)
- 674 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:29:14 ]
- 言語に逐次処理が組み込まれているかどうかは別として、
逐次処理が「表現できない」言語は実用にならないから、 普通の関数型言語はどれも逐次処理を表現できるようになってる どうやって表現するかは言語ごとに違って、組み込みで持ってるの(Scheme,ML)とか、 データに関数を適用して、その結果に関数を適用して…という構造で逐次処理を表すの(Clean)とか、 処理自体を第一級のデータとして扱うの(Haskell)とか
- 675 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:34:35 ]
- 関数型でも、Lispとかで逐次処理をだらだら書いてるソースを見かけると、
手続き型とあんま変わんなくね?と思うことがある。 一方で、非関数型でも、定義を並べる感じできれいに書かれてるものもある。 言語も重要だが、書き手の心構えのほうが影響でかい気がする。
- 676 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:41:26 ]
- レスどうも。ポインタありがとう。
やっぱ書き方というか設計によるところもあるんですね。
- 677 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 10:42:02 ]
- 関数型言語はあくまで関数プログラミングを支援する言語だからな
Haskellで命令的に書くことも不可能じゃない
- 678 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 11:42:58 ]
- >>674
基本的には関数の評価が強制されることを利用して順序をつけるので同じじゃないかな
- 679 名前:デフォルトの名無しさん mailto:sage [2008/04/06(日) 12:02:37 ]
- >>678
例えばSchemeの((lambda () a b c))でa b cが順に評価されるのを 「関数の評価が強制されることを利用」と表現するのは無理がないか? Haskellの動作に至っては関数と全く(特定の処理系の内部実装の話を別にすれば)関係ない
- 680 名前:デフォルトの名無しさん mailto:sage [2008/04/07(月) 01:32:03 ]
- 論理型言語の現状はどうなってるの?
|

|