トップページ⇒tech
1001コメント349KB

関数型言語Part3

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
前スレ

関数型言語Part2
http://pc3.2ch.net/test/read.cgi/tech/1007387924/
0232デフォルトの名無しさんNGNG
>>230
違うってばよ。
Cマガの記事はたまに素人が書いてるので鵜呑みにできない。
「関数型言語*風*にも書ける」と書いてあるなら、あながち
間違いとは言えないけど、正解では絶対にない。
点数付けるなら、100点満点中25点ぐらい。

これはね、
「Cでもオブジェクト指向(風に書くことが)できる」
と言ってるのと同じ。

C言語と、関数型言語として洗練された構文と意味論を持つ
専用言語では、記述の幅からして比較にならない。
0233デフォルトの名無しさんNGNG
MLの説明だけど、関数型言語の取っ掛かりとして参考になるんでは。
SML(Standerd) 演習
http://a414s1.it.nanzan-u.ac.jp/smlbook/smlwww/
初級ML講座
http://nt-p.net/adx/e/ml/mlkouza.html

C言語の時と同じ使い方をしようとしても、有り難味が判らないんじゃないかな。
論理学とか数学の知識は多少でもあった方がいい。
0234アシュル ◆adhRKFl5jU NGNG
コンパイラの最適化に関してはまだまだgccに勝てる処理系はないみたいですが、
関数型言語の共通コンパイラバックエンドを作ろうというプロジェクトなどが
計画されたことなどあるんでしょうか?聞いたことないですが。
0235デフォルトの名無しさんNGNG
gccは中間コードにlispを採用しています。
lispだと最適化がやりやすいため。
0236アシュル ◆adhRKFl5jU NGNG
LISPはS式を使っているが、S式はLISPとは限らないべ
0237デフォルトの名無しさんNGNG
> コンパイラの最適化に関してはまだまだgccに勝てる処理系はないみたいですが、
....
0238名無しさん@EmacsNGNG
>>237
ACL以外で、まともな最適化まで考えられてる
処理系とかあるの?
0239デフォルトの名無しさんNGNG
lispはdynamic typing・・・
0240デフォルトの名無しさんNGNG
>>229
MLって元は定理証明システム用言語だった訳だけど、
数式処理も一種の定理証明システムなのではないか…
ちうあたりで、同じ様な処理が求められているという意味かも?

>>231
MLと断ってあるし、原始言語(LISP)はあまり関係ないと思う
0241デフォルトの名無しさんNGNG
>>234
>関数型言語の共通コンパイラバックエンドを作ろうというプロジェクトなどが
>計画されたことなどあるんでしょうか?聞いたことないですが。

これなんてどうなんでしょう?
http://cs1.cs.nyu.edu/leunga/www/MLRISC/Doc/html/
0242デフォルトの名無しさんNGNG
>241
なにこれ?
0243デフォルトの名無しさんNGNG
GCC では ML や Haskell を扱ってくれないから、自分たちで作っちゃおう
ってゆー噺だと思われ
0244デフォルトの名無しさんNGNG
そういや、HaskellコンパイラのGHCは中に丸々GCC抱え込んでたけど、
あれは、GCCの公式配布パッケージの中に取り込んでもらえないのかな?
0245デフォルトの名無しさんNGNG
>>244
若干意味不明
0246デフォルトの名無しさんNGNG
gccに含まれるのかどうかというのは何がポイントと
なるんでしょうか?バックエンドとしてgccを使うのは
なにもHaskell4.0Xだけではなかったように覚えてますが。
0247デフォルトの名無しさんNGNG
s/Haskell4.0X/ghc-4.0X/
0248デフォルトの名無しさんNGNG
O'Caml 入れた。感動した。ところでこれって読みはオキャムルで良いの?
0249デフォルトの名無しさんNGNG
ラクダの絵が描いてあるから「お、キャメル」でわ
0250デフォルトの名無しさんNGNG
漏れは、オッカムとかけてるのかと思ったが、違うか。
0251名無しさん@EmacsNGNG
>>250
漏れもそうだと思ってたけど、
例の剃刀との関連が今一というか。
0252デフォルトの名無しさんNGNG
>>248-251
スレ違いと思うのは漏れだけ?

関数型プログラミング言語ML
1:デフォルトの名無しさん :02/01/31 11:43
  関数型言語ML(SML/Caml/Ocamlなど)についてのスレッドです。
             ̄ ̄ ̄ ̄ ̄
http://pc2.2ch.net/test/read.cgi/tech/1012445015/
0253デフォルトの名無しさんNGNG
スレ違いと言うか、より適切なスレがあるという感じだわな。
0254デフォルトの名無しさんNGNG
ここは関数型言語一般についてのスレです。
0255デフォルトの名無しさんNGNG
>>252
そのスレは以前↓の質問があったのですがシカトされたという経緯がありますた

720 :デフォルトの名無しさん :03/01/10 01:54
   OcamlとOccamは違うのですか?
0256デフォルトの名無しさんNGNG
↓のサイトが、関数型プログラミング他について濃い話をしていて、なかなか興味深かった。
ttp://www.ops.dti.ne.jp/~cake-smd/hw/FrontPage.html
0257248NGNG
スレ違いすんません。読み方に定説が無いようなので岡村君と呼ぶ事にします。
ところで O'Caml には lambda という名前のオペレータは無いんですね。
新鮮ですた。It's FUNny, isn't it?
0258デフォルトの名無しさんNGNG
>>257
http://caml.inria.fr/archives/200106/msg00278.html
0259デフォルトの名無しさんNGNG
>>258
.fr ドメインの理由で www.ocaml.org があったのか。(w
0260デフォルトの名無しさんNGNG
関数型言語で、window処理のプログラミングをする事って
できるんでしょうか?
イベントをストリーム化するとかの理屈はなんとなくわかるんですが、
例えば現在のマウスカーソルを取得して何かしたりするクリティカルな
場合は、ストリームから取ってこれないですよね?
0261デフォルトの名無しさんNGNG
Concurrent Cleanのデモアプリ
ttp://www.cs.kun.nl/~clean/About_Clean/Platform_Games/platform_games.htm

アクションゲームが書けるようだが。
0262デフォルトの名無しさんNGNG
そんなリンク張られても・・・
0263デフォルトの名無しさんNGNG
>>76
そんなことしてる処理系は何がありますか?
もしくは、どうやって調べられる?
0264デフォルトの名無しさんNGNG
Lisp も含めて、関数型言語系スレが廃れてしまって寂しい限りじゃ。
0265デフォルトの名無しさんNGNG
haskellスレの人たちも、
代数の勉強にいったまま帰って来てない
みたいですよね。。。
0266デフォルトの名無しさんNGNG
最近、ちょっぴりモナドが分かってきたような気がする……。
0267デフォルトの名無しさんNGNG
ttp://www.bagley.org/~doug/shootout/craps.shtml

処理速度は良いとして、メモリの使用量の違いが興味深いね。
こんな感じ
    http://www.bagley.org/~doug/shootout/bench/lists/

SML/NJ, bigloo, cmucl 辺りは結構メモリ食いだね。Haskell もかな。
0268デフォルトの名無しさんNGNG
直リンしてしもた。

色んな言語(関数型多し)のコードを見られるのは面白いと思います。
別の意味でも笑えます("Hello there sailor" とかね)。
0269デフォルトの名無しさんNGNG
>>268 直リンクとリファラと ime.nu
0270山崎渉NGNG
(^^)
0271デフォルトの名無しさんNGNG
もちょっと賑やかでもいいと思うが
0272デフォルトの名無しさんNGNG
(^^)が賑やかになるのは勘弁して欲しい
0273デフォルトの名無しさんNGNG
age
0274デフォルトの名無しさんNGNG
MLスレ, Haskellスレ, LISP/Schemeスレ,,, スレ分散しすぎなんちゃう?
でも、なんで concurrent cleanスレないんやろ?
0275デフォルトの名無しさんNGNG
ここでやればいいんじゃないの?
HaskellスレもMLスレも
ここからわかれたようなもんだし
0276デフォルトの名無しさんNGNG
量的には分かれていて正解
0277デフォルトの名無しさんNGNG
>>275
ここでやると埋もれてくから、スレ立てした方がいいよ。
寂れるの覚悟で。
0278デフォルトの名無しさんNGNG
nani wo ?
0279デフォルトの名無しさんNGNG
>でも、なんで concurrent cleanスレないんやろ?
立てろ
0280デフォルトの名無しさんNGNG
Haskellと兼用でいいんじゃないの?
0281デフォルトの名無しさんNGNG
いいの?
というか、なんでそんなにスレ立て避けるの?
Javaとかクソスレバンバン立ってるじゃん。
0282デフォルトの名無しさんNGNG
スレ立つ→すぐ消える、じゃ情報が蓄積されない。
ただそれだけ

新スレ立てたらここにリンク貼ってねー
0283デフォルトの名無しさんNGNG
Java to hikaku suru noha nanikaga chigau
0284デフォルトの名無しさんNGNG
"nanikaga" tte nani Yo ?
tatoeba ??
0285デフォルトの名無しさんNGNG
koko ha fpl no sure
Java ha fpl ni arazu
0286デフォルトの名無しさんNGNG
omaera hiragana tsukatte kudasai.
0287デフォルトの名無しさんNGNG

Java as a Functional Programming Language
ttp://www-compsci.swan.ac.uk/~csetzer/articles/javafunctional.pdf
0288デフォルトの名無しさんNGNG
>>287
minakutemo daitai naiyou ga souzou dekiru
Java demo fp mitaina koto ga dekiru to itteirunodarou
sikasi sore ha Java ga fpl dearu koto wo imisinai
0289名無しさん@xyzzyNGNG
java as a fpl <<<<(koerarenai kabe)<<<java -jar kawa.jar
0290デフォルトの名無しさんNGNG
sara shi age
0291anonymous@defaultNGNG
kokoha ascii only desuka ?
0292デフォルトの名無しさんNGNG
kansuugata gengo ha ascii moji ni sika taiou sitemasen
0293デフォルトの名無しさんNGNG
gauche
0294デフォルトの名無しさんNGNG
Pythonの場合、「関数は、ファーストクラス・オブジェクトである」ので
rubyやperlと異なり、なんとか関数型プログラミングできる。っていうこと
でいいんでしょうか?

http://www-6.ibm.com/jp/developerworks/linux/010615/j_l-prog.html
0295デフォルトの名無しさんNGNG
>>294
いいんじゃないですか。
でも正格言語では、末尾呼び出しのLOOP展開ができないと
本格的には使えないけど。
0296デフォルトの名無しさんNGNG

Rubyで関数プログラミング
http://sky.zero.ad.jp/~zaa54437/programming/ruby/
0297デフォルトの名無しさんNGNG
>>295
PerlもRubyも関数オブジェクトを生成できるけど、何が違う?
そういえば最近のPyhonはレキシカルクロージャ作れるようになったんだっけ?

ところで関数がファーストクラス・オブジェクトで、末尾呼び出しの最適化が
行われるPostScript言語も関数プログラミングできまつか?
0298デフォルトの名無しさんNGNG
>>296
ものすごく読みにくいね。
背景とか行間とか。
0299デフォルトの名無しさんNGNG
ありゃたぶんマッカーでしょう。
0300デフォルトの名無しさんNGNG
>>298
Squeaker かも。背景とか。
0301デフォルトの名無しさんNGNG
>>298
スタイルシートOffにすれば、まぁよめる。
0302デフォルトの名無しさんNGNG
用語集の辺り、良くまとめたよね。
0303デフォルトの名無しさんNGNG
>>300
Cleaner というべきかも!

純粋関数型言語 Concurrent Clean
http://sky.zero.ad.jp/~zaa54437/programming/clean/
0304デフォルトの名無しさんNGNG
形無しラムダ計算で
字面を見て再帰だって簡単に判断する方法ってないの?
簡約すると元に戻る奴が再帰だよね?
0305bloomNGNG
http://homepage.mac.com/ayaya16/
0306名無し@沢村NGNG
おまいらよ、関数型言語なんてしょせん古典言語だよ。時代遅れの遺物だよ。ザコだよ。
おまいら、これからの言語はおまいらよ、これからの言語は量子言語しかないよ。
ふつーの言語では演算によって結果を求めるが、量子言語ではすべての結果は重ねあわせの状態でそでに存在しているから、その中から求める結果を選ぶだけよ。
求める結果は重ねあわせの係数で決まるのよ。
このあたりが古典言語と大きく文法が異なるところだな。
おまいらよ、人類の歴史は量子以前と以後とで2つにわかれるんだよ。
つまり、おまいらのは古典だな。
0307デフォルトの名無しさんNGNG
http://www.google.co.jp/search?q=%E9%87%8F%E5%AD%90%E8%A8%80%E8%AA%9E&ie=UTF-8&oe=UTF-8&hl=ja&lr=
0308山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0309デフォルトの名無しさんNGNG
>>306
こんなところにこなくてよい
0310デフォルトの名無しさんNGNG
ConcurrentCleanわかるやついる?
0311デフォルトの名無しさんNGNG
Haskellスレか>>303のリンク先に訊くよろし
さもなくばcleanスレ立てる
0312デフォルトの名無しさんNGNG
>>304
それは正規形を持たないという。
再帰は不動点演算子を使っているものをいう。

で、正規形を持つかどうかは判断できません。
0313デフォルトの名無しさんNGNG
うーむそうかアンガト
英語の論文読んでも
closure analysisとかフロー解析しないとできなそうな
雰囲気だったしな〜
0314デフォルトの名無しさんNGNG
SELFSELF問題
0315デフォルトの名無しさんNGNG
((lambda(x)(x))(lambda(x)(x)))
0316デフォルトの名無しさんNGNG
((lambda(x)(x x))(lambda(x)(x x)))
こうだったかも
0317新しい文法スレの753 NGNG
>>785
>一番新しいものでも 3月21日だったので

それは残念だね。更新されるのを待つのがいいかもしれないね。
>>792
>でも、最左戦略で non-strict とすると、だいたい外側から試していくわけで、
>継続という処理が終わっていない部分は内側のように思えますが、
>そうなんでしょうか?

内側だろうが外側だろうが、まだ計算が終わっていない部分全て。

>また、Scheme で継続を呼び出すときは値をひとつ渡すわけですが、
>上記のように内側の部分を継続とすると、
>継続を呼び出したときに与える値はどこにはまるんでしょうか?

そりゃ、「継続で指定された場所」でしょう。

>Clean の簡約戦略は関数型簡約戦略だそうですが、これだとどうなんでしょう?

Cleanは知らないので答えられない。俺が教えて欲しいぐらい。

>また、仮にランダムに redex を選ぶような戦略を想定するとどうなるんでしょう?

それでも、計算されていない部分が継続で問題無いと思うが。
0318新しい文法スレの753NGNG
>でも、こんな操作は書き換え規則では単純にはかけませんし、

俺もよくわからない。

>上の例に delay と force を入れると、
>Haskell や Clean のように、
>合流性や参照透明性が保たれるようになるんでしょうか?

おそらく、delayとforceを使うと、評価順が一定に定まってしまって、
戦略を選ぶ余地がなくなると思うが。
だから、確かに合流性は保たれるんだけど、これは、レデックスが
同時に複数でてくる言語とは違うような気がする。

たしかに、Haskellのような言語に参照透明性が保たれる
ように継続を導入するのは一筋縄ではいかなそうだな。

俺が単純に考えて思いつくのは、例えば「この場所では同じ
継続呼び出ししかできない」のような制約を課せば
合流性が保たれるように実現できるかもね。

つうか、俺は関数型の専門家でもなんでもないし、
ラムダ計算とかも昔少し独学した程度なので、
つっこんだこと聞かれても困るが。

第一、あなたの方が詳しいような気がするんだけど。(w
間違ったこと言っていたらスマソ。
0319デフォルトの名無しさんNGNG
誰に対して答えているのかね?
0320デフォルトの名無しさんNGNG
虚無に対して
0321デフォルトの名無しさんNGNG
脳内掲示板に対する回答かね?
0322デフォルトの名無しさんNGNG
新しい文法スレなんつーのがあったのね
0323デフォルトの名無しさんNGNG
新次元新発想!新しい文法を作るスレ
http://pc2.2ch.net/test/read.cgi/tech/1047970129/
600 あたりから関数型の話題になってますた
0324デフォルトの名無しさんNGNG
>>318

結局、継続は関数型言語の純粋さを破壊する非関数型な機能のようですね。
0325753NGNG
>>324
ハァ?
そんなことを書いた覚えは無いが。
0326デフォルトの名無しさんNGNG
覚えが無くてもそれはそういうことなんですよ。

あと、合流性の定義は調べたほうがいいですね。
評価順を決めれば結果がひとつになるというのは
合流性が成り立ったことにはならないので。
0327753NGNG
>>326
合流性の定義をそう解釈した覚えはない。
君が誤解している。
delayを使えば、「評価順を変える」などという
ことがそもそも出来なくなるので
戦略を選ぶ余地は無くなる。

それから、継承を使っただけでは合流性は損なわれない。
0328753NGNG
例えば、Haskellにも絶対に変えられない評価順は存在する。
全てが全て、ラムダ計算のβ-簡約のように、評価順が
全く自由というわけではない。
0329753NGNG
例えば君の出した例でわかりやすく解説すると、

(call/cc (lambda (k) (cons (k 1) (k 1))))

ならば、合流性は損なわれない。
全部k 1でそろえてるからだ。
これと同じ規則にしろとはいわないが、継続を使ったということが
イコール合流性が損なわれるということにはならない。
0330デフォルトの名無しさんNGNG
ついでにいうと、δ項の機能を備えたラムダ計算
にも絶対に変えられない順序は存在する。
引数を計算しておかないとδ-リダクションは行えないからな。
0331デフォルトの名無しさんNGNG
>>328

もちろん、そういうのはありますよね。
TRS のほうでいえば、ある redex を書き換えた結果として
新しく redex がでてくるなら
前者より先に後者を書き換えるのは無理ですし。
■ このスレッドは過去ログ倉庫に格納されています