関数型言語Part IV ..
[2ch|▼Menu]
319:デフォルトの名無しさん
05/05/25 15:31:59
変つうよりも見にくいつうならまぁ同意。

320:デフォルトの名無しさん
05/05/25 21:33:48
> f : (int -> float -> short -> char) * int -> float -> short -> char

これを日本語で読み下してもらえませんでしょうか


321:デフォルトの名無しさん
05/05/25 21:44:58
A型とint型のペアからB型への関数型.

ここで
A型は,int型からB型への関数型,
B型は,float型からC型への関数型,
C型は,short型からchar型への関数型.


322:デフォルトの名無しさん
05/05/25 22:16:00
あんがとう

f : ((int -> (float -> (short -> char))) * int) -> (float -> (short -> char))

括弧で順位を付けるとこうなるのね


323:デフォルトの名無しさん
05/05/25 23:03:58
* って デカルト積 ?

324:デフォルトの名無しさん
05/05/26 03:28:02
関数型アセンブラ言語ってないの?

325:デフォルトの名無しさん
05/05/26 06:08:09
>>324
関数型CPUがないから、

326:デフォルトの名無しさん
05/05/26 08:44:35
ある意味Lisp machine上のLispとか?

327:デフォルトの名無しさん
05/05/26 08:55:54
OcamlのZINC VM
 URLリンク(pauillac.inria.fr)


328:デフォルトの名無しさん
05/05/26 17:43:54
確かにLISPマシンはアセンブリと言えるカモナ。

329:デフォルトの名無しさん
05/05/26 18:25:55
cleanのabcマシーンとか。他にもいくつか抽象機械はあったはず。良くしらんけど。

330:デフォルトの名無しさん
05/05/26 18:56:04
抽象機械とVMは違う概念でしょうか

331:デフォルトの名無しさん
05/05/26 21:26:49
>>330
>>330
>>330
>>330
>>330
>>330
>>330
>>330
>>330
>>330

332:デフォルトの名無しさん
05/05/26 21:28:58
>>330
同じと思ってよい

333:デフォルトの名無しさん
05/05/26 21:35:04
>>332 ?

334:デフォルトの名無しさん
05/05/26 21:36:22
英単語の略称とその和訳を知ったかぶるスレはここですか?

335:デフォルトの名無しさん
05/05/26 21:36:56
>>331を見て「ループに書き直さなきゃな」とか思う漏れは末期症状?
>>330仮想機械と抽象機械ってどう違うの? 実装と仕様ってこと?

336:334
05/05/26 21:37:23
つか、単なる和訳じゃん。

337:デフォルトの名無しさん
05/05/26 21:40:21
abstract machine 抽象機械: 操作的意味論を定義するためのもの
virtual machine  仮想機械: ソフトウェアで記述された機械語インタープリタ。
                   もし抽象機械があれば、まず抽象機械と対応のとれる実装をする事が多い


338:デフォルトの名無しさん
05/05/26 22:13:46
恥ずかしい>334がいるのはこのスレですか

339:337=334
05/05/26 22:25:34
いみふめ

340:デフォルトの名無しさん
05/05/26 22:26:44
>>338
おにいちゃん・・・はずかしい・・・

341:デフォルトの名無しさん
05/05/26 22:54:03
ごめんね。おにいちゃんSECDとかSKとかGとかBとかCAとかLAとか知らないからごねんね。

342:デフォルトの名無しさん
05/05/26 23:02:47
おにいちゃん、必死過ぎ・・・

343:デフォルトの名無しさん
05/05/27 05:42:11
結局>331は何を言いたかったん?

344:デフォルトの名無しさん
05/06/03 08:24:26
自己準同形と自己同形の違いが分らんですにゃ

345:デフォルトの名無しさん
05/07/29 23:06:11
初代1です
ごめんね

346:デフォルトの名無しさん
05/09/21 05:36:47
OCamlとHaskellのどちらかを勉強しようと思うのですが
どっちがいいでしょうか?

347:デフォルトの名無しさん
05/09/21 06:40:55
OCaml と GHC と MLton(SML) をインスコして試してみたら。
好き嫌いの問題が大きいから、どれがお勧めとかは難しいよ。

348:デフォルトの名無しさん
05/09/21 13:35:42
Pugs書いた天才を見習ってhaskell一ヶ月やってみたら?

349:デフォルトの名無しさん
05/09/21 17:30:11
>>346
まず「関数プログラミング」を買って読む。
URLリンク(www.kindaikagaku.co.jp)

それで理解できたらHaskellに進む。
無理だったらOCamlへ進む。


350:デフォルトの名無しさん
05/09/21 22:33:41
一応、Lispの経験あります。
Haskellの方が先進的ということなので、
Haskellやってみようかと思います。

351:デフォルトの名無しさん
05/09/21 22:42:20
自分が頭がいいつもりになれるしね

352:デフォルトの名無しさん
05/09/24 00:43:28
関数型のメリットって、副作用がないことだけ?

353:デフォルトの名無しさん
05/09/24 00:46:51
副作用が無いと言うより、副作用を使わないよう強制されるじゃないか。
或は副作用を切り分けられるとか。

354:デフォルトの名無しさん
05/09/24 01:18:52
なるほど。
副作用がないことがあらかじめわかってるからこそできることって
なんだろう?

そういう機能をC++とかにいれたりしないんだろうか?

355:デフォルトの名無しさん
05/09/24 01:22:55
>>352
why functional programming matters
URLリンク(www.sampou.org)

356:デフォルトの名無しさん
05/09/24 01:57:58
>>354
C++に例えるならテンプレートのコンパイルタイムプログラミング
今流行じゃないのか?

357:デフォルトの名無しさん
05/09/24 03:35:43
>そういう機能をC++とかにいれたりしないんだろうか?
まだ研究段階だから。そんなこと言うなら○○入れろとかいくらでも言える。


358:デフォルトの名無しさん
05/09/24 11:54:50
>>352
不必要に副作用に頼らなくていいのがひとつの利点だと思う。
たとえばループをまわすときに毎回カウンタ変数を更新するのは直感的でない。
そこで高階関数を使って典型的なループを抽象化する。
この点では副作用が禁止されていることはそれほど重要ではない
(たとえば、副作用を避けて再帰でやっても似た問題がある)ので、
この手法はC++の標準アルゴリズムなんかに取り入れられている。

一方、C++の標準アルゴリズムがそれほど使いやすくない(私見)理由のひとつは、
直感的な「データ構造の値渡し/値返し」が効率上の理由から避けられている事だ。
副作用がなければ、値渡しと参照渡しを区別できないので、
値渡しの直感性を保ったまま参照渡しで実装できる。
さらに、データが変更されないことが保障されていれば、
データ構造の共有もやりやすい。

359:デフォルトの名無しさん
05/09/24 12:23:24
値渡しと参照渡しの差が無くなるのって重要ですね。

関数型は関数に副作用がないことを仮定できる時、
どこまでコードが抽象化できるかを考えてるわけですね。

JavaやC#、C++を使っていますが、
やはり何か足りないと感じてます。
そのヒントが副作用にあるといいのですが。

まだまだプログラミング言語って改良の余地ありますよね。

360:デフォルトの名無しさん
05/09/25 23:32:37
関数型言語で
HTTPdとかWEBクライアントとか作ってる人っているのかな?

361:デフォルトの名無しさん
05/09/25 23:41:16
>>360
web browser
URLリンク(pauillac.inria.fr)

362:デフォルトの名無しさん
05/09/26 00:39:04
System programming using FP
URLリンク(lambda-the-ultimate.org)
そのキャッシュ
URLリンク(www.google.com)


363:デフォルトの名無しさん
05/09/26 06:59:36
>>361
Tkベースで不細工だけど
関数型で書いてる意味あんの?

364:デフォルトの名無しさん
05/09/26 07:07:40
もしかして関数型って実用的じゃないの?

365:デフォルトの名無しさん
05/09/26 07:12:22
>>363
意味をどのレベルで求めるかに依るんじゃないかな。

URLリンク(pauillac.inria.fr)

以前 ML スレで ML で書いた OS の話が出て来た時も、意味が
有るか無いかって話題になったけど、その議論自体あまり意味が
無いんだよね。要は人それぞれ。
俺は作者の中の人じゃないから、存在するって事以外知らんよ。

366:デフォルトの名無しさん
05/09/26 07:14:15
>>364
何でそう思ったのかな。

367:デフォルトの名無しさん
05/09/26 08:04:12
URLリンク(cleangl.sourceforge.net)
ゲームぐらいは作れるよ。

368:デフォルトの名無しさん
05/09/26 12:00:49
ゲームなんかどの言語でも作れるけど?

369:デフォルトの名無しさん
05/09/26 12:10:40
言語処理系作るなら関数型がいいよ
なんせhaskell覚えたて厨がPugs1ヶ月で作ってるし

370:デフォルトの名無しさん
05/09/26 18:01:28
>>368
whiteで3D格闘ゲームよろ

371:デフォルトの名無しさん
05/09/26 20:46:40
>>360
MLでWebサーバ作成
URLリンク(pllab.jaist.ac.jp:8080)

372:デフォルトの名無しさん
05/09/26 21:55:34
C,C++の代わりになる関数型言語の処理系はないってことですね

373:デフォルトの名無しさん
05/09/26 22:12:03
はいはい何も出来ませんよ

374:デフォルトの名無しさん
05/09/26 22:21:24
はいはい(馬鹿には)何も出来ませんよ

375:デフォルトの名無しさん
05/09/26 22:36:58
わざわざ馬鹿と断る意味ありませんよ

376:デフォルトの名無しさん
05/09/27 00:39:43
関数型言語の代わりになるC,C++もねーだろ

377:デフォルトの名無しさん
05/09/27 09:04:21
おらいら、「関数型言語で書いた」と言いたいだけだろ?
TPOをわきまえろ。

378:デフォルトの名無しさん
05/09/27 15:32:10
なぜ関数言語は実用的じゃないのか?

379:デフォルトの名無しさん
05/09/27 16:04:58
え、実用的じゃないなんて意見は初めて聞いたが・・・
>>378はなんでそう思ったんだ?


380:デフォルトの名無しさん
05/09/27 17:39:28
世のアプリは関数型で作られてない。

381:デフォルトの名無しさん
05/09/27 18:49:27
Aransk?

382:デフォルトの名無しさん
05/09/27 18:59:16
まあ、実際使われてないのは
実用的じゃないからなんだが

383:デフォルトの名無しさん
05/09/27 19:21:17
ある程度以上の頭を持っていれば非常に実用的。
そうでないと非実用的。

384:デフォルトの名無しさん
05/09/27 21:14:25 0
なこたぁない。
C言語をリプレイスするだけのメリットがないだけだろ。

385:デフォルトの名無しさん
05/09/27 22:35:49 0
「CかC++の置き換え = 主流・メジャー・優秀」か。

>>384
お前Win板とかで「Jane最強!!」とか「Opera糞!!」とかいってるタイプ?

386:デフォルトの名無しさん
05/09/27 23:24:29
現実から目をそらすな

関数型は使われない、これ事実。
でも俺らは研究する、飯のために。

387:デフォルトの名無しさん
05/09/27 23:35:50
だからさ、別に「他の人々があまり使わない」のはどうでもいいのよ。
僅かな人間だけが使いこなせるこの現状のほうが、俺には都合がいいし。

388:デフォルトの名無しさん
05/09/27 23:46:34
最近C#やC++とかメジャー言語でも関数型機能が取り込まれてるよな
関数型の知名度が上がるのはこれから




389:デフォルトの名無しさん
05/09/28 00:03:19
と 10 年前も言われてたが Java が出た。

390:デフォルトの名無しさん
05/09/28 00:06:34
>最近C#やC++とかメジャー言語でも関数型機能が取り込まれてるよな
もう関数型にこだわってる実用性の低い言語に価値はないね。

391:デフォルトの名無しさん
05/09/28 00:09:33
>>387
ヒント:統計

392:デフォルトの名無しさん
05/09/28 01:28:20
【研究】「実社会にも応用可」 "ジョルダンの曲線定理"、世界初の完全証明…信州大教授ら
スレリンク(newsplus板)l50

この証明の検証に使用された定理証明システムはMLで書かれたプログラムです。

393:デフォルトの名無しさん
05/09/28 07:57:21
MLはCで書かれたプログラムです。

394:デフォルトの名無しさん
05/09/28 08:51:57
何の事だ?

395:デフォルトの名無しさん
05/09/28 10:06:03
マシン語最強ってことだろ

396:デフォルトの名無しさん
05/09/28 11:27:17
最強論議は小学生まで。

397:デフォルトの名無しさん
05/09/28 18:01:43
関数型言語って使われてるの?

使われてないよ派
├OSが関数型じゃないから派
│├そもそもCPUが手続き的派
│└だからMLでOS作ろうぜ派(古典的行動派(絶滅の危機))
│ └やっぱLISPマシンだよ派(懐古派、第6世代派)
├関数型は遅い派
├関数型は人間の思考と合わないよ派(右派過激派)
│└それは最初に手続き型でプログラミングを習うからだ派
│ └最初にSchemeで教育しよう派(MIT信奉過激派)
│  └最初の教育はLOGOだろ派、Smalltalkだろ派(スレ違い派)
│   └LOGOは関数型言語だよ派(スレ違い修正派)
├機械語最強派(小学生派)
├おまいらは使わなくていいよ派(過激アカデミック派)
└火星人の陰謀だよ派(電波派)

使われているよ派
├定理証明とか言語処理とかはやっぱ関数型だよね派(穏健アカデミック派)
│└HaskellでRubyインタプリタ書きました派(行動派)
├Webサーバーとか実用アプリも書けるよ派
│└Haskellでグラディウス書きました派(行動派)
├C++とかPnutsとかC#とかで関数型は生き続けるよ派(中道派)
│└C++もJavaScriptもRubyも関数型言語だよ派(左派過激派、関数オブジェクトがあればみんな関数型だよ派)
└うちのシェルはeshだよ派


398:デフォルトの名無しさん
05/09/28 21:15:26
>>397
君すごい。

関数型って開発環境が無いから使われないのかねぇ。
使われない理由を積極的に考えて、そこを改善していけばいいと思う。
行き着く先はC#みたいなものになるかもしれないけど、
たぶんC#よりちょっといいものができる気もする。

APIが移植されてないとかそういう理由かな。

関数型でTomcatみたいなのを作ろうかと思ってるんだけど、
お勧めの言語とOSってあります?

399:デフォルトの名無しさん
05/09/28 21:57:24
OCaml + Linuxでいいんじゃね?

400:デフォルトの名無しさん
05/09/28 22:12:08
俺は小学生派

401:デフォルトの名無しさん
05/09/28 23:08:08
俺はツンデレ派(日頃関数型言語の悪口ばっかり言ってるけど、
家に帰るとPythonでバリバリラムダりまくっちゃうの)

402:デフォルトの名無しさん
05/09/28 23:16:24
純粋関数型以外は関数型言語ではないと思うので,
Haskell & Linux


403:デフォルトの名無しさん
05/09/29 00:19:48
迷うなー

そんな時間もないから、OCamlかHaskellのどっちかにしたい。
どっちも気に入ってる言語だから、
誰かもっと決定的な理由が欲しい。

Tomcatのようなミドルウェアを置くか、
ミドルウェアを見せないで、
ASPやJSPみたいなテンプレートエンジンを作ってしまうかでも迷ってる。



404:デフォルトの名無しさん
05/09/29 00:43:42
>>398
>関数型って開発環境が無いから使われないのかねぇ。
開発環境いうよりは、まともなフレームワークが少ないからだと思う
関数型便利だ便利だっていってる人の大半はなんだかんだ理屈ならべて
ちっこいプログラムしか書かんから、
そもそもそういうでかいライブラリの需要もすくないんだろーな


405:デフォルトの名無しさん
05/09/29 00:49:43
手続き型言語ならCやC++の既存のライブラリを利用する口金合わせも簡単だけど、
関数型はそうもいかんもんねえ。

406:デフォルトの名無しさん
05/09/29 02:11:48
>MLはCで書かれたプログラムです。
なんてあるけど、一部のlibraryやoptimizerとしてC言語があるだけで、
別に何の言語でもいいんじゃねー?


407:デフォルトの名無しさん
05/09/29 15:08:18
>>406
それはネタだから。
ネタにマジレスかっこ悪いって。

408:デフォルトの名無しさん
05/09/30 04:30:28
関数型って日本語処理できないから嫌い

409:デフォルトの名無しさん
05/09/30 21:01:16
>>408 がやりたいのは、どの程度の日本語処理だろう。

簡単なテキストフィルターなんかじゃなくて、
もっと高度なことをしたいのかな?


410:デフォルトの名無しさん
05/09/30 21:21:46
Shift_JISの文字を読んで文字単位の操作をすることがあんまり気を付けなくてもできるとか、そんな風味

411:デフォルトの名無しさん
05/09/30 22:35:30
文字なんて整数で扱えばいいじゃん。
なんだかんだでPerlだってそうしてるでしょ?

412:デフォルトの名無しさん
05/09/30 23:48:32
408=410じゃないけど、ポイントになるのは、バイト単位じゃなくて文字単位で扱えることだと思う。
この辺の対応状況については、漏れの知っている限りでは、

OCaml: camomile を入れれば、いろんな文字コードのものをひとまず Unicode
に変換して、統一的に扱うことができる。正規表現だととりあえず PCRE がUTF対応。

Haskell: Hugs は CVS 版が Unicode をサポートをしているらしい。GHCはまだ怪しい感じ。
GHCで鬼車を使うパッチはある。

Scheme: Gauche はきちんと日本語をサポートをしているという印象がある。


というところで、まとめると「できんこともない」というところか。簡単なテ
キストフィルタなら問題ないだろうけど。


413:デフォルトの名無しさん
05/10/01 00:00:43
smlnjをダウンロードしたのですが、どのようにしたらコマンドプロンプトで使えるのですか??初心者のこんな僕にどうか教えてください!!

414:デフォルトの名無しさん
05/10/01 00:28:19
日本語対応は関数型言語の1つの課題だね。

415:デフォルトの名無しさん
05/10/01 00:35:46
なんかいきなり賑わいだしたが、なんかあったの?

416:デフォルトの名無しさん
05/10/01 01:05:56
> Haskell: Hugs は CVS 版が Unicode をサポートをしているらしい。GHCはまだ怪しい感じ。
GHCで鬼車を使うパッチはある。

GHCはコンパイラ自体の字句解析がEUC以外の多バイトコードに対応してない。

417:デフォルトの名無しさん
05/10/01 16:15:33
mod-perlみたいなのがないと
仕事じゃ使えない。

418:デフォルトの名無しさん
05/10/01 22:33:20
仕事 == CGI 書き?

419:デフォルトの名無しさん
05/10/01 23:13:08
自然言語処理です。

420:デフォルトの名無しさん
05/10/01 23:44:18
確かにWEBアプリには使えないね。

421:デフォルトの名無しさん
05/10/02 00:12:31
人権擁護法案がとおっちゃいますよ。

この法案聞こえはいいが、日本滅亡の序曲ですよ。


小泉が人権擁護法案早期に提出 (05/9/29・国会答弁)
スレリンク(liveplus板)

人権擁護法案ってどんなものなんだ?
URLリンク(blog.livedoor.jp)

分かる!人権擁護法案(Flash)
URLリンク(www.geocities.jp)

 言 論 弾 圧 に よ り 2 c  h も 閉  鎖 か ! ?

422:デフォルトの名無しさん
05/10/03 06:18:24
CPUが関数型ってどういうの?どんなインターフェイスなの?

423:デフォルトの名無しさん
05/10/03 14:07:02
全部遅延されているから、キーボードを叩かないと動き始めない。

424:デフォルトの名無しさん
05/10/05 14:29:22
>>422
フォン・ノイマン型アーキテクチャだと関数型といえないだろ
CPU,メモリ,入出力という発想から脱却しないと


425:デフォルトの名無しさん
05/10/05 22:03:31
リスプマシーンあったじゃん。

426:デフォルトの名無しさん
05/10/05 22:31:34
しばらくみてたけど質問の意味がわからないな。>>422

Lispマシーンのinstruction setは関数型じゃありませんって。>>425
それが、hardware Lisp CPUであろうと、Virtual Machineだろうと。

言語としてのLisp自体、制御構造とか副作用とかが
沢山ありますよね。それをサポートするためのinstructionで
いっぱいで、その全体は関数型とは程遠いですよ。
むしろ、ちょっと風変わりな(保守的・古典的な)プロセッサって感じ。

一方、LispマシンorVMの存在は認めた上で、それが関数形言語の
実装という応用に対して便利か?という議論はありえますが、
これにも僕は否定的です。

427:デフォルトの名無しさん
05/10/05 23:16:20
マウスの入力ってどうすんの?

428:デフォルトの名無しさん
05/10/05 23:30:43
関数型CPUはメモリーもレジスタもないんだよ
値は命令間を直接流れる


429:デフォルトの名無しさん
05/10/06 00:42:28
CPUっていうか
FPGAの設計に落とし込んだりできないだろうか。

430:デフォルトの名無しさん
05/10/06 02:09:02
環境は?

431:デフォルトの名無しさん
05/10/06 02:10:38
関数型っていうのはプログラミングの際に有用な概念であるけれど、計算機の構造上の有用性はあるの?

432:デフォルトの名無しさん
05/10/06 02:29:19
URLリンク(www.shiro.dreamhost.com) 2005/09/30 の所
URLリンク(homepage3.nifty.com)

Lisp/Common Lisp は純粋関数型じゃないから置いておいても、
これからのメニーコア CPU には関数型言語がベストマッチだと
いう考えが出て来てもおかしくはないかな。

433:デフォルトの名無しさん
05/10/06 02:50:14
そうかなあ。レイトレみたく完全に独立な計算をパラに展開するのは
容易だが、相互に通信したり状態を共有したりするようなのは
純粋関数型で書くのはなかなか難しいと思う。
例えば探索なんか一見パラにできそうでもキャッシュやルックアップテーブルが
きちんと機能して枝刈りできないとつらいっしょ。

>>432のリンク先に書いてあるようなミクロな並列性はスレッドをプールから
ひっぱってきてアサインして完了を待つなんてことやるコストに引き合うか
疑問でしょ。たぶんプロファイルとった上で限られた部分にだけ適用しても
引き合うんじゃないの。行列計算とかならともかく、インタラクティブなもの
はたいがい状態引き回しが必要だろうし。

>>432みたいのはちょっと、裏付けなさすぎの与太話の域を出ないんじゃないかな。


434:デフォルトの名無しさん
05/10/06 13:28:45
関数型がくそに思えてきた今日この頃。

435:デフォルトの名無しさん
05/10/06 19:15:02
>>428
Tomasulo algorithmは見方によっては命令間で直接データを渡してるな。
見方によってはただのレジスタリネーミングだけど。


436:428
05/10/06 21:22:11
ほほぅ。思いつきで言ってみたが、いいセンスしてるな。俺。

437:デフォルトの名無しさん
05/10/16 18:58:16
関数型マンセーな人の何割かが実践してプログラム組めば、
関数型が使えないなんてことにはならないかもしれんな
と最近思った。


438:デフォルトの名無しさん
05/10/16 19:31:10
そういう面倒なだけで論文の書けないことは、下々の皆様にお任せします。

439:デフォルトの名無しさん
05/10/17 23:27:54
研究者でも何割かはまともな論文書いてないだろうし、
って言ったら怒る?


440:デフォルトの名無しさん
05/10/18 00:04:29
Common Lispで実践的なプログラムを書いてみる入門書が無料で読めるね。
まだちょっとしか読んでないけどなかなかおもしろいよ。

URLリンク(www.gigamonkeys.com)

441:デフォルトの名無しさん
05/10/18 00:20:32
目次だけ見ましたが、>>440 Common Lispで(Common Lispっぽい)実践的な
コードを書く話かと思います。関数型言語と関係があるように思えませんでした。

Common Lispを関数型言語とは普通呼ばないし、Lispの中でもCommn Lispは
関数型プログラミングはやりにくい部類ですよね。

442:441
05/10/18 00:33:53
うげ!
今改めて>>1をみたら、Lispスレや、あろうことかEmacs Lispスレまで
関係あることになってるのな。そういうpositionのスレだとは知らんかった。

てなわけで、関数型に対してカタクナ過ぎる俺は無視して続けてくれい >>440

443:デフォルトの名無しさん
05/11/01 22:07:10
そこまで気にする必要ないよ。
多少の派閥があるだけだから。

444:ハーピィ
05/11/01 22:23:52
E・∇・ヨノシ <444ゲット♫

445:デフォルトの名無しさん
05/11/06 00:08:28
>>442
つうか Lisp の中で特別 Common Lisp が関数型やりにくいってのは誤解だと思
われ。ただ単にマルチパラダイムなだけでやるやつはやる。そんとき特別
Scheme よりやり難いってわけでもない。型推論とかパターンマッチング構文も
いくつか実装があったような


446:デフォルトの名無しさん
05/11/06 02:43:18
Ocamlの質問ってここでしていいですか?
URLリンク(www.kb.ecei.tohoku.ac.jp)
の88pの練習問題 字句木をやっているんですが、stringの先頭から
順番に文字を受け取りたいときってどうすればいいんですか。
もちろんstr.[n]ってすればできるんですけど、
リストみたいにもっとスマートにできないんですかね。

447:デフォルトの名無しさん
05/11/06 03:08:39
>446
一応より特化したスレがあるが

関数型言語ML(SML, OCaml, etc.), Part 3
スレリンク(tech板)

448:デフォルトの名無しさん
05/11/06 03:48:10
>>446
残念ながら、そういう方法はない。ので、
1. str.[n]を駆使する
2. 自分で list_of_string を書いてリスト化してから処理する
3. Stream.of_string を使って Stream で処理する
4. そのほか
のどれかをやるしかない。

この練習問題くらいなら 2 だろうなという気がする。


449:デフォルトの名無しさん
05/11/15 15:28:30
String.iter

450:デフォルトの名無しさん
05/11/19 16:19:08
何この差wwwww

URLリンク(sourceforge.net)

C++ 16669
Java 16645
C 15876
PHP 12092
Perl 6187
.
.
.
LISP 323


451:デフォルトの名無しさん
05/11/19 18:22:43
Ruby 398( ´,_ゝ`)プッ
Visual Basic .NET 289(*≧∇≦)ノ☆ ギャハハ プギャー

452:デフォルトの名無しさん
05/12/15 08:10:46
誰か STM(software transaction memory) とはどーいうものか
教えてくれぬか

453:デフォルトの名無しさん
05/12/15 09:53:20
>>452
マルチスレッドプログラミングで、スレッド間の(mutableな)共有変数を扱うとき、
コードの特定の部分が他のスレッドに割り込まれることなく(つまり、atomicに)実行されてほしいことがある。
STMの考え方は、その部分で起こった共有変数への読み書きを局所的なログに保存しておいて、
その部分が終了したときまとめてメモリに反映するというもの。
最後に不整合が見付かった場合、ログを捨てて最初からやり直す。

こういうとき普通はロックを使うんだけど、ロックにはいくつか問題がある。
例えば、共有変数を扱う二つの(副作用のある)関数A,Bがあったとして、
A,Bともに正しくロックを使っていたとしても、「Aを呼び、次にBを呼ぶ」ことをatomicに行う
関数を書くには、AとBの抽象化を破壊してどの変数をロックすべきかを調べないといけない。
STMはこの問題を解決する。

URLリンク(www.research.microsoft.com)
俺はこれの前半を読んだだけだから、変なことを言ってたら突っ込んでくれ。

454:デフォルトの名無しさん
05/12/15 22:23:18
optimistic lockingでやるってことか。
最後にコミットするときはロックによるatomicityの保証がいる筈だが、
Cで書いたcommit APIの中に閉じ込めるのでHaskellからは見えないということ
みたいだな。
>>453の論文の範囲では、Haskellはuni-processorのみ、かつuser-level
threadが safe pointでしか切り替わらないからCで書いた部分はアトミック
と考えていいらしい。Rubyと同じってことだね。


455:デフォルトの名無しさん
05/12/16 10:24:50
誰か関数型プログラミングどんなものか教えてくれ。
普通のウィンドゥプログラムとかかけるの?

456:デフォルトの名無しさん
05/12/16 10:28:19
>>455
書けるに決まってるだろハゲ。チューリング完全を何だと思ってやがる。

457:デフォルトの名無しさん
05/12/16 10:29:27
>>453
>ログを捨てて最初からやり直す。
うーん、まだpaper読んでないけど、これってどう実現するんだろう
整合性が確かめられるまで無制限にやり直すのだろうか

458:デフォルトの名無しさん
05/12/16 19:09:50
それよりコミット(反映)する際には結局ロックが必要そうな…

459:デフォルトの名無しさん
05/12/16 19:43:54
コミット中に、他のスレッドに割り込まれないように実装してるんだよ。

460:デフォルトの名無しさん
05/12/16 20:53:42
>>456
手続き型と何が違うんだ?3行でわかりやすく書け。このちんかす。

461:デフォルトの名無しさん
05/12/16 22:33:11

が違


462:デフォルトの名無しさん
05/12/16 22:58:34
>>459
ユーザレベルスレッドでしか使えないのか

463:デフォルトの名無しさん
06/01/06 21:07:13
割りかし有名な 3D ポリゴンモデラーで Wings 3d つーのがあるんだけど、
ソース見たら Erlang で書かれてた。Erlang で書かれた本格的なアプリなんて
見た事無かったから少し驚いた。

URLリンク(www.wings3d.com)

普通にサクサク動くし、Erlang ちょっと良いかも。
でも、日本じゃ何故か人気無いね。なんでだろう。

464:デフォルトの名無しさん
06/01/06 21:31:47
国が国策としてHaskellを支援するべき。
チャイナと戦うためにはそれしかない!
最近、大原麗子見ないけど、どうしてるんだろう?

465:デフォルトの名無しさん
06/01/06 21:54:13
いちおう聞くけどなぜ Haskell なの?

466:デフォルトの名無しさん
06/01/07 12:03:29
CやJavaは適度にプログラマの職を増やしてくれる。
雇用の創出こそが一番大事で、ものの良し悪しなど二の次なのですよ。
でも、結果として生産性において負けるようなことがあるなら、
それは雇用が減るということで、渋々新しいものが導入される。

467:デフォルトの名無しさん
06/01/07 20:30:41
国策ならRubyだろ

468:デフォルトの名無しさん
06/01/30 22:11:12
>>467
  ( ゚д゚)
_(__つ/ ̄ ̄ ̄/_
  \/    /
     ̄ ̄ ̄


  ( ゚д゚ )
_(__つ/ ̄ ̄ ̄/_
  \/    /

469:デフォルトの名無しさん
06/02/12 13:39:24
プログラマの地位向上を国策とすべきだ。

470:デフォルトの名無しさん
06/02/12 15:45:35
無能文系プログラマを締め出せばいい。
ハスケル標準
さらにスピード要求の機能はCやアセンブリ

471:デフォルトの名無しさん
06/02/12 18:43:42
授業の課題で、
「MLやHaskellに代表される関数型プログラミング言語について調べ、
PascalやC言語に代表される手続き型言語との相違を説明するとともに、
関数型プログラミング言語が広く普及していない理由を議論しなさい。」

というのが出たのですが、さっぱりです。
頭のイイおまいら、教えてください!!

472:デフォルトの名無しさん
06/02/12 18:53:40
つ【google】

473:デフォルトの名無しさん
06/02/12 21:41:29
>>471
とりあえずラムダ算法がベース。ここまでで広義の関数型言語(関数的、とも云える):Lisp方言やMLなど
参照透明性があるとか副作用がないとか(副作用はモナドや一意型などで解決している):HaskellやClean
普及してない理由はCやJavaやPerlがなんで普及しているかを考えればおk
詳細は URLリンク(www.shiro.dreamhost.com)
俺の個人的見解では「ある言語しか知らないプログラマはその言語でしか物を考えられない(ほげ言語のパラドクス)」と
関係してると思う。ほげ言語のパラドクスについては URLリンク(www.shiro.dreamhost.com)

474:デフォルトの名無しさん
06/02/12 21:43:00
あー、参照透明性があるとか副作用がないとかそういう言語を特に「純粋な関数型言語」とか云うらしいぜ。
Wikipedia とかも見とけ。

475:デフォルトの名無しさん
06/02/12 21:57:04
関数型言語の定義は厄介だな。
「関数プログラミングをencourageする言語」と言ったところか。
Basic, C, C++, Javascript, Lisp, ML, Haskell
のうち、適当なところから右が関数型言語ということになるかな。

「ラムダ計算を基礎とする言語」という定義は、Unlambdaという例外があるのでよくないと思う。

476:デフォルトの名無しさん
06/02/12 22:04:48
>>475
474ですが、Unlambdaでぐぐったら「Unlambdaは、obfuscated programming languages
(混乱させるプログラム言語、といったところでしょうか) の一種として開発された言語です。
しかしただそれだけではなく、純粋関数型言語というもう一つの特徴も持っています」
とあったのですが……。しかし生産性は高くなさそうですね。

#広義の関数型言語、のもっといい定義というか表現、誰かお願いします

477:デフォルトの名無しさん
06/02/12 23:45:47
a href     "


478:471
06/02/13 00:53:18
>みなさん
色々ありがとうございます。
今日色々考えてみて、実際問題として、数学的な考えをもてるプログラマが少ないことが一番
関数型プログラミング言語の普及を妨げてるのかな、と思ったんですが、どうでしょうか?

素人なんで、間違っていたらすみません。

479:471
06/02/13 01:33:29
レポート記入途中なのですが、
「広義の関数型プログラミング言語とは〜であり、LispやSchemeがこれに含まれる。
より厳密な意味での関数型プログラミングとは〜であり、Haskellが挙げられる。」
という文章を書きたいのですが、〜にはどういう内容を書けば適当でしょうか?

因みに、厳密な定義の要件としては、「参照透過性」を満たすだけでよいのでしょうか?


480:デフォルトの名無しさん
06/02/13 01:47:20
>>479
広義の方はラムダ算法とか高階関数とかがごく普通に使われる言語、みたいな感じでいいと思うよ。
厳密の方はWikipedia によれば(Wikipedia項目リンク)
どうもそうっぽい。宣言型言語とも呼ばれるみたいだね。

#レポートの成功とそう遠くない将来、関数プログラマとしてここに来てくれることを期待する:-)

481:デフォルトの名無しさん
06/02/13 01:47:40
URLリンク(www.cs.nott.ac.uk)


482:473
06/02/13 01:48:39
URL は
Wikipedia項目リンク
だね。閉じ括弧までURLと見なされる@xyzzy+2ch-mode

483:デフォルトの名無しさん
06/02/15 04:54:07
Mirrandaってどんなの?

484:デフォルトの名無しさん
06/02/15 04:58:49
Oberon と Mirranda はあるのに Titania は無いのか。

485:デフォルトの名無しさん
06/02/15 07:47:17
数論的プログラミングってなんでないの?
くだらない言語ばっかり山のように作って、
それらの上にくだらない意味論を定義して。
ゴミを山盛りにするのが言語屋の仕事ですか?

486:デフォルトの名無しさん
06/02/15 09:41:43
言いだしっぺの法則発動

487:Why not FP ?
06/03/24 21:35:32
関数型プログラミングがイマイチ流行らない原因について;
手続型に較べて高度な抽象化が要求されるけど、普通の人にはそれほど高度な抽象化ができないから。
高度な抽象化ができるのは極一部のプログラマだけで、マジョリティではないから。
…と思ったんだけど、どーよ?

488:デフォルトの名無しさん
06/03/24 22:13:02
わざわざ抽象化しなくても手続き型でごりごり書けちゃうし、そのほうが速い(書くのも実行するのも)
という意識があるからではないだろうか

489:デフォルトの名無しさん
06/03/24 22:16:42
>>487 単純に普通プログラマーが目にする言語が関数型じゃないものが多いということだと思われ。
つーか自分がそうなんだが・・・

関数型のプログラムの感じつかめるサイトないでしょうか・・・
長くてもかまいません。

490:デフォルトの名無しさん
06/03/24 22:20:07
>>487
それもあるかも知れないが、関数型言語を使えるのに
趣味でコーディングするときには使わない人が多いことを考えると
他にも大きな理由がある気がする。

491:デフォルトの名無しさん
06/03/24 23:07:56
趣味の関数型コードを公開しないだけでは?

492:デフォルトの名無しさん
06/03/25 04:25:03
XSLTって関数型言語にいれていいか?
あれなら、結構Webに転がってると思う

493:デフォルトの名無しさん
06/03/25 23:07:55
グラフィック(GUI)とか日本語処理とか
ライブラリが揃ってれば、、
(日本語ドキュメントつきで)

実験コードからちっとも先に進まない俺


494:デフォルトの名無しさん
06/04/10 20:21:55
>>493
それなら日本語ドキュメントは少なめだが(でも今年本が立て続けに出るらしい)Haskellがオススメ。

495:デフォルトの名無しさん
06/04/10 20:36:41
いまのGHCは多バイト文字の処理に関してはうんこなのでHaskellは勧められない。

496:デフォルトの名無しさん
06/04/10 22:04:14
GHCはたしかに多バイト文字は駄目すぎだが、Hugsだと大丈夫。

497:デフォルトの名無しさん
06/04/18 01:42:02
関数型プログラムをC++で実現したいんだけど、遅延評価とかは無理だよね??
lambda をなんとなく実装してみたけど、遅延評価は実装できなかった・・・。


498:デフォルトの名無しさん
06/04/18 09:29:51
>>497
無理ではない。

499:デフォルトの名無しさん
06/04/18 14:40:09
>>498
どうやるの?

500:デフォルトの名無しさん
06/04/18 15:57:49
lamdaができれば遅延評価もできるんじゃね?

501:497
06/04/19 00:59:45
ちょっと、説明がわるかったっすね。。

ただの遅延評価(BOOST とかの lambda)はコンパイルレベルで出来るのでOKなんですけど、
たらいまわし関数を最適な形で処理できる遅延評価をC++で実装したいわけなんです・・・。

502:デフォルトの名無しさん
06/04/19 01:04:53
ああ、ただのthunk化という意味での遅延評価なら難しくないが
完全遅延、すなわちグラフリダクションを実装するのは難しいな。
Haskellをほぼ全て実装することに等しい。

503:デフォルトの名無しさん
06/04/23 01:56:04
Reactive Programmingというものがなんであるかを素人の漏れにも解るように
5分以上かかっても構いませんのでどなたか解説をおながい致します m( _ _ )m

504:デフォルトの名無しさん
06/04/23 07:18:36
解説してみようと思ったが、「漏れ」「おながい」という言葉が大嫌いなので止めた。

505:デフォルトの名無しさん
06/04/23 10:06:23
Erlangってつかてる人いる?

506:デフォルトの名無しさん
06/04/23 13:59:55
>504
そんなこといわないで、お・ね・が・い♥

507:デフォルトの名無しさん
06/04/28 00:06:17
C++でムリヤリクロージャーする関数書いたら出来た(・∀・)アヒャ!!

一部 BOOST の Lambda で使われてるテンプレート駆使したらほぼ望みどおりのものが出来ましたよ。

自前の Lambda もつくってみたけど、戻り値をTypeList(BOOST では tuple だっけ?)をつかっててクロージャーには使えなかった('A`)

508:デフォルトの名無しさん
06/04/28 11:31:41
早くそのコードを公開するんだ

509:デフォルトの名無しさん
06/04/30 02:03:00
>>505
ノシ

まあ、あまり関数型言語という意識はないけど。

510:デフォルトの名無しさん
06/05/03 12:12:23
自前じゃない実行環境、特にVM系、の近況が分かるページないでしょうか。
JVM, Parrot, C--など。(C--は中間言語かな)

>>422
すげー亀レスで、しかもちょっと方向が違うけど、
昔九州大学で、データフロー計算機の上で関数型言語動かしてましたよね。

511:デフォルトの名無しさん
06/05/03 12:13:30
そういや、一部Haskellを使ったPerl6はあるのに、(Pugs)
Parrot上で動くHaskellはないんですね。
List(cons)の実装が非効率的になるからかな?

512:デフォルトの名無しさん
06/05/04 14:21:56
Parrotの魅力を語ってくれ

513:デフォルトの名無しさん
06/05/04 19:01:51
Parrotって、Perl6用に使われるVMってことでいいんすか?
ちょっとスレ違いかも知れんけど

514:デフォルトの名無しさん
06/07/30 11:27:03
保守age

515:デフォルトの名無しさん
06/09/25 07:49:03
学生でも教員でもないんだけどJournal of Functional Programmingって大学の図書館とか研究室くらいにしか置いてないんですかね。

516:デフォルトの名無しさん
06/11/04 13:02:33
「関数型プログラム」は「ラムダ計算」と何が違うのですか?

517:デフォルトの名無しさん
06/11/04 20:04:30
ラムダ計算はプログラムじゃないねぇ

518:デフォルトの名無しさん
06/11/04 22:23:23
え? 違うんですか???

519:デフォルトの名無しさん
06/11/05 00:07:07
プログラムの基礎理論 _で重要な_ 論理体系と言うか数学体系と言うか
プログラムが実行されるということの本性をモデル化しようとしたらああなった,ってんだけど
# 歴史的経緯はよく知らない

520:デフォルトの名無しさん
06/11/05 00:48:00
>>516
関数型プログラムって何だろう。
まず一括りにするとややこしいから具体的なものを出してちょうだい。

そして、おそらく現存するものは知りうる限りすべてラムダ計算とはちがう。

521:デフォルトの名無しさん
06/11/23 19:39:21
>>520
関数を変数として扱えること

522:デフォルトの名無しさん
06/11/23 21:24:56
>>521
じゃあCは関数型言語ですね!
qsortとかbsearchとかどうみても関数を値として使ってます

523:デフォルトの名無しさん
06/11/23 21:44:42
>>521 でりげーとでいいやん

524:デフォルトの名無しさん
06/11/23 22:08:35
第一級の値

525:デフォルトの名無しさん
06/11/23 22:12:41
型理論!!!!!!!

526:デフォルトの名無しさん
06/11/23 22:14:13
Cの関数は第一級だよな。
実行時に作る手段がないだけで。

527:デフォルトの名無しさん
06/11/23 22:17:21
デリゲートの数学的モデルを教えてください

528:デフォルトの名無しさん
06/11/24 23:19:32
Haskellは
型付ラムダ式に
いろいろ付け加えたものに
みえるけど。

(型付と形無しは別物ではあるけど)

529:デフォルトの名無しさん
06/11/24 23:21:55
やぁ、伊藤君。

530:デフォルトの名無しさん
06/11/25 12:20:39
誰?

531:デフォルトの名無しさん
06/11/25 13:45:08
>>530
ググレカス

532:デフォルトの名無しさん
06/11/25 14:21:56
で。誰?
URLリンク(www.google.co.jp)


533:デフォルトの名無しさん
06/11/28 07:00:43
URLリンク(lambda-the-ultimate.org)
要約
「最近Lambda the Ultimateへの記事投稿が減ってるんだけど,このまま行ったら消滅しちゃうことになるよ?」

534:デフォルトの名無しさん
06/11/28 16:03:28
LtU、度々同じ文句言ってるよなw

535:デフォルトの名無しさん
06/12/01 10:25:30
Erlangスレってここでよいでつか?

536:デフォルトの名無しさん
06/12/01 20:56:08
Erlang スレではないけどここでいいんじゃない。
答えられる人がいるかどうかは知らんけど。

537:デフォルトの名無しさん
06/12/01 22:00:04
erlangのことどう発音してる?
エアランク?
アーラン?

538:デフォルトの名無しさん
06/12/02 00:18:29
アーラン。

539:デフォルトの名無しさん
06/12/02 00:31:39
あーらん

540:デフォルトの名無しさん
06/12/02 01:53:14
ぇろぁん(鼻音で)

541:デフォルトの名無しさん
06/12/02 07:10:28
ドイツ語だから、えあらんく

542:デフォルトの名無しさん
06/12/03 17:51:57
アッラーフアクバル

543:デフォルトの名無しさん
06/12/05 14:19:57
あなあっへんばっく

544:デフォルトの名無しさん
06/12/08 01:16:57
λ計算スレを情報学板に立ててみました.
スレリンク(informatics板)


545:デフォルトの名無しさん
06/12/09 17:53:53
関数型言語ってI/Oが苦手だよね?
キーブレイクで改ページ入れ一定件数ごとにも改ページ入れる帳票出力とか難しくない?


546:デフォルトの名無しさん
06/12/09 18:46:24
IOが苦手というのも賛同できんが、それはそもそもIOじゃないだろ。
むしろそういうのは得意な方だと思うんだが。

547:デフォルトの名無しさん
06/12/12 18:39:17
関数型って便利だけど使いどころ難しいよね。
関数を動的に作成するのは魅力的だけど、
「じゃあ、どこで使用すれば効率がいいか?」って言われたら、
うーんってなっちゃう。。

今のところ、「株のスクリーニングの条件を自分でプログラムできる」ぐらいしか
アプリケーションへの応用が思いつかないです。
現在の株のスクリーニングとか出来るHPは細かいところまで指定したいのに
なかなか出来ないことが多いので。。

他に何かいい適用個所ってありますか?

548:デフォルトの名無しさん
06/12/12 19:01:42
>>547
自分でプログラムできるのは、別に関数型じゃなくてもいい気がするが、
トレード用のソフトは自前のスクリプトを実装している場合が多い。

549:デフォルトの名無しさん
06/12/12 19:08:17
>>547
第一級の関数の真価は、そんなマクロというか設計レベルの話じゃなく、
アルゴリズムの実装とか、従来forやらifやらで実現されてきた定型処理のようなものが
簡潔に書けることにあると思う。

550:デフォルトの名無しさん
06/12/31 19:35:44
質問です。
関数型言語で問題なく日本語を扱えるものには、どんなのが有るでしょうか?
haskellは無理みたいです・・・

551:デフォルトの名無しさん
06/12/31 20:44:27
>>550
Gaucheとか。

552:デフォルトの名無しさん
07/01/15 22:18:12
>>550
俺も>>551に一票。
ホント自然に使えてかっこイイ。

553:デフォルトの名無しさん
07/03/26 20:54:29
あげ

554:デフォルトの名無しさん
07/04/09 12:03:51
コンビネータって、実際のプログラミングでどんなトコに使ってどう嬉しいの?パーサ以外にある?

Yコンビネータって、グローバルな名前空間を汚さずに再帰関数を受け渡すために使う?ユースケースが浮かばないんだけど。


555:デフォルトの名無しさん
07/04/09 12:16:20
頭がおかしい人の書き込みですので、スルーして下さい。(精神病院担当医師)

556:デフォルトの名無しさん
07/04/09 12:16:39
Yコンビネータの話は普通の言語ではグローバル関係ないか。ローカル名でも、スコープ外の場所でもふつう再帰できるよね。
とするとますますYコンビネータの使い所がわからない。

557:ワロタ
07/04/09 12:18:01
これがオブ脳って奴か

そのうち「チューリング・マシーンって実際のプログラミングでどんなトコに役立つの?」
とか言い出す気かw

558:アホ
07/04/09 12:39:03
虚無空間でのブーツ・ストラップみたいなもんだろ実際

559:デフォルトの名無しさん
07/04/09 12:42:32
理論上重要だからって、それが実際のプログラミングに直接的に役に立たないということにはならないよね。
実際、パーサコンビネータなんて役に立つし。


SKI自体を普通のプログラムから直接使わないだろうけど、
Gaucheのマニュアルでcombinatolic programmingなんて言葉を見たし、
うまく役に立つ方法や方面があるんじゃないの?

560:バカ発見
07/04/09 12:49:19
純粋な関数型モデルで再帰を表現でき、
それが単純明快なプログラミング言語モデルの一つとなっている
ってだけの話だろ、表面的な所では。

詳しい話はスコットの領域理論を読み直せ>>焼き豆腐


561:デフォルトの名無しさん
07/04/09 12:50:43
× 単純明快なプログラミング言語モデルの一つ
○ 単純明快な(純関数型)プログラミング言語モデルの一つの根拠

562:デフォルトの名無しさん
07/04/09 12:53:34
焼き豆腐ってLispやってたんじゃねぇ〜のか?
だらしねぇな

563:デフォルトの名無しさん
07/04/09 12:58:01
豆腐の学習態度は、梯子を登らずにいきなり屋根の上に登ろうとする愚挙に似ている。

564:デフォルトの名無しさん
07/04/09 13:13:35
コンビネータの元は
関数型言語モデル業界で
λ計算とともにその根拠となっている
コンビネータ理論だな。

FortranやBNF記法の父 John Backus が
ACM受賞講演で語った関数型言語 FP が
ちょうどこの理論で作られてたっけ。
その辺りで関数型言語が再評価されて、
現代の関数型言語ブームにつながった、と(おおぼけ)

Lispも最初はλ計算に基づいていたけど、
70年代には立派な手続き型言語に堕ちていたな。


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5387日前に更新/172 KB
担当:undef