関数型言語Part IVat TECH
関数型言語Part IV - 暇つぶし2ch521:デフォルトの名無しさん
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年代には立派な手続き型言語に堕ちていたな。

565:豆腐って?俺の脳が豆腐って事?まあいいけど
07/04/09 13:14:19
パーサ以外にも、あっておかしくないと思うんだけどな。
CPSみたいにひとつのスタイルって言うかそれベースのライブラリ的なのが。

ないの?

566:デフォルトの名無しさん
07/04/09 13:15:12
豆腐の話は飛躍ばかりするが
ベースが確立されていないので
答ようがない。

567:デフォルトの名無しさん
07/04/09 13:16:31
豆腐スレ
スレリンク(tech板)

568:デフォルトの名無しさん
07/04/09 18:43:11
XML関係はコンビネーターで書かれてるのが多いよ。

569:デフォルトの名無しさん
07/04/09 19:14:35
それは興味深いですね。

高階関数を使って再帰下降型パーサを構成する
といったお話でしょうか?

それとも・・・
金融関係のお話でしょうか?


570:デフォルトの名無しさん
07/04/09 20:43:22
単に「論理式はand, or, not結合子と論理値で構成される」
というのと同じような意味でXMLのelementをCombinatorと呼んでいるだけと思われ。

似たような発言で「Haskll上にDSLを作る」を「HaskellにCombinatorを追加する」と言ってしまうDQNも多し。


571:デフォルトの名無しさん
07/04/09 21:03:35
コンビネータって結局何なの?
「自由変数のない関数」って意味ならプログラミング言語のあらゆる関数がそうだと思うんだが。

572:デフォルトの名無しさん
07/04/09 21:16:53
>>571
はあ。それは良かったですね。

573:571
07/04/09 21:25:27
>>572
すまん、素人なので変なことを言ってるかもしれん。
良かったら門外漢にも分かるように説明してくれないか。

574:デフォルトの名無しさん
07/04/09 21:34:02
無意味

575:デフォルトの名無しさん
07/04/09 21:57:29
>>573
コンビネータは、ぶっちゃけ 「自由変数のない関数」 で合ってるよ。
んで、プログラム言語のあらゆる関数がそうだと思うのなら、別にそれでも良いよ。間違ってはいないさ。

576:デフォルトの名無しさん
07/04/09 22:04:09
なんという結論

さすがFランク

577:デフォルトの名無しさん
07/04/09 22:18:37
自分の認識だと、引き数に関数のみ取り、
引き数で受け取った関数を何らかの形で組み合わせたものを返す以外のことをしない関数、
みためでいえば、
中身には引き数以外の名前が現れない関数、って理解だけど、あってる?

578:デフォルトの名無しさん
07/04/09 22:44:20
コンビネータ

「コンビネーター計算は、λ計算と同等のことを変数やλ抽象を持たず、
 ただ適用だけをもつシステムで実現しようとしたものであって、λ計算とは別物」というのは同意。

ただ、(コンビネータ計算ではなく)ラムダ計算の文脈では、単に「自由変数を含まないλ式」
という意味で結構広く使われているように思いますし、私もそのように理解してました。
本来は誤用だったのかも知れませんが、すっかり定着してしまっているように思います。

調べてみると、Simon Peyton Jones の
The Implementation of Functional Programming Languages の p.224 には
「A combinator is a lambda expression which contains no occurences of a free variable [Barendregt, 1984]」
と書いてあります。ちょっと探した限りではバーレンドレヒト以前でこの意味で使っているのは見当たらなかったので、
この用法はやっぱりバーレンドレヒトが起源なのかも。それはそれでちょっと面白いなぁ。


579:デフォルトの名無しさん
07/04/09 22:51:46
またjargon fileの解釈論争みたいな塩梅だなあ

580:flatline ◆r6EONKKhcc
07/04/10 02:04:09
>>554
こんなのもありますよ
URLリンク(citeseer.csail.mit.edu)
Y in Practical Programs

581:デフォルトの名無しさん
07/04/10 02:12:26
おお、これは!
でも、PSもPDFもみんな見れない…。
右上のView or download:から本文を見るんだよね?

582:デフォルトの名無しさん
07/04/10 03:17:32
(さっきコテハンを使ってしまったのは失敗だった)

最近CiteSeerのミラーがどこもまともに機能してないなぁ...
こちらで っ[ URLリンク(citeseer.ist.psu.edu) ]

主張を要約すると「再帰関数を(わざわざ)Yコンビネータを使って定義するようにすると
- メモ化したくなった
- エラーの際にデフォルト値を返したくなった
- call treeを調べたくなった
等を含む色々な場合に拡張がすんなり行きますよ」というものです

まぁ読んだからって人生変わるほどのすごい論文ではないですが,小ネタとして

583:デフォルトの名無しさん
07/04/10 07:33:46
コンビネータ論理チュートリアル URLリンク(e.tir.jp)

584:デフォルトの名無しさん
07/04/10 07:50:12
>>580氏が別の分野でもλ関連やってる事を今朝初めて知ったw

585:デフォルトの名無しさん
07/04/10 22:08:02
やっぱ、頭の悪い人間が関数型言語とかに手を出しちゃいけないんだなぁってのが
この流れでよくわかった。

いちばんタチが悪いのは、単に無能なんじゃなくて「自分はわかっている」という
壮絶な勘違いにすぐ走ることだね。

586:デフォルトの名無しさん
07/04/10 22:18:42
で?

587:デフォルトの名無しさん
07/04/10 22:22:36
いちいち反応すんなよw

588:デフォルトの名無しさん
07/04/10 22:26:59
Barendregtが自由変数無しλ式指して
「あぁ~コンビネータの話?」って俺様定義するのと、
ヘタレがミニ言語作るだけの行為を指して
「俺、コンビネータ作っちゃおうかなぁ~」と意味不明発言するのでは
雲泥の差がある、ような気がしないでもない。

589:デフォルトの名無しさん
07/04/10 23:16:07
たぶんどっちもjargonだ

大して違わねぇよ
というような気がする

590:デフォルトの名無しさん
07/04/11 21:19:09
>>570
そっちじゃなくて、XMLを操作する手続きというかフィルタを合成していく方。


591:デフォルトの名無しさん
07/04/11 21:26:30
高階関数を使って再帰下降型パーサを構成する
といった類の話ですね。

592:デフォルトの名無しさん
07/04/11 21:28:56
いや慎重に言い直しておこう。
最近あぶない人が出没しているようだから。

高階関数を使って構文解析木を処理していく
といった類の処理なんじゃないですか?

593:デフォルトの名無しさん
07/04/21 12:18:15
ストリングリダクションについて調べたいんだけど取っ掛かりになりそうな本ってないだろうか。

スレ違いっぽくて悪いんだが他に訊けそうなスレがないんで頼む。

594:デフォルトの名無しさん
07/04/21 12:20:23
まだ項書換系とか学部レベルの勉強してるのか。

595:デフォルトの名無しさん
07/04/21 12:37:48
コンパイラ・スレの話題だな

596:デフォルトの名無しさん
07/04/28 23:49:44
関数型言語の性質をC++やその他の言語に実装する場合って
みんなどんな書籍参考にしてるのですか?


597:デフォルトの名無しさん
07/04/28 23:59:59
シュプリンガーの関数型言語作成本とか

598:デフォルトの名無しさん
07/04/29 00:04:29
>>597
なんて名前本ですか?

599:デフォルトの名無しさん
07/04/29 00:08:09
自分で探せ
あと、お前の実力では今読んでも力にならないと思う。

600:597
07/04/29 00:11:45
シュプリンガーじゃなくてプレンティスホールだったw

601:デフォルトの名無しさん
07/04/29 00:17:22
>>600
お前さん書籍の名前知らないんじゃねーのw?
プレンティスホールなんてもうねーだろw

602:デフォルトの名無しさん
07/04/29 00:19:56
>>600
プレンティスホールということは
  The implementation of functional programming languages, Simon Peyton Jones, Prentice Hall 1987
でっか?

603:デフォルトの名無しさん
07/04/29 00:22:47
>>601-602
もともと一冊程度しかねぇんだから
いちいち煽んなよクズ

604:デフォルトの名無しさん
07/04/29 00:25:41
>>601
600ではないが(この板はIDが出ないんだなorz)、たしかにピアソンになってるけど
プレンティス・ホールの名前も残ってるぽいし、過去の出版物だとその当時の名前で
引用するので、あながち>>600がまちがってるわけでもない。・・・と思う。

参考:
Pearson Education
URLリンク(www.pearsoned.com)
Pearson Prentice Hall
URLリンク(phcatalog.pearson.com)

605:デフォルトの名無しさん
07/04/29 00:27:37
>>596
URLリンク(citeseer.ist.psu.edu)
みたいな論文とかじゃね?

606:デフォルトの名無しさん
07/04/29 00:30:55
>>597
URLリンク(www.etl.luc.edu)

607:デフォルトの名無しさん
07/04/29 00:40:47
>>604
いちいちもったいぶった物言いして他人に不快感を撒き散らすなよクズ

608:デフォルトの名無しさん
07/04/29 00:49:52
>>596
シュプリンガーのLNCSにありそうな希ガスが見ちゃいねえ。すまん。

609:デフォルトの名無しさん
07/04/29 00:52:11
表紙が紅白の本だったっけ

610:デフォルトの名無しさん
07/04/29 00:58:52
>>609
SPJ本は、そう。
International Series in Computer Science(pub:PH)に共通の装丁があの紅白だと思う。

611:デフォルトの名無しさん
07/04/29 01:03:39
えーと結局どの本なのかいまだに見付けられないヘタレなのですが

612:デフォルトの名無しさん
07/04/29 01:12:28
つかSPJ本の古い方って、PSファイルで公開されてなかったっけ?

613:デフォルトの名無しさん
07/04/29 01:15:17
>>612
うーんと、
URLリンク(research.microsoft.com)
のことでしょうか?

614:デフォルトの名無しさん
07/04/29 01:18:57
>>607
604ではないが、どの辺が「もったいぶってる」のかも、何を不快に思うのかもまったくわからん。
メンタルクリニックでも行ったほうがいいんじゃないか?

615:デフォルトの名無しさん
07/04/29 01:21:23
>>614
604ですけど俺は無視したですよ。
あの手のは反応を楽しむから、放っておいたほうがいいと思うので。
スレ趣旨と関係ないから消えますね。

616:デフォルトの名無しさん
07/04/29 01:21:29
>>613
ですね。

617:デフォルトの名無しさん
07/04/29 01:23:03
そもそも回答に対して煽り口調で詰め寄る人間が居るから
荒れるのだと思う。
丁寧に質問し、煽らない。これが重要。

618:デフォルトの名無しさん
07/04/29 01:23:37
>>616
さんくすこ。
この本は関数型言語の実装や動作の理解にはいいけど
もともとの質問(>>596さん)ような目的にはどうなんだろ。


619:デフォルトの名無しさん
07/04/29 01:24:13
語尾にwを付ける人間の発言はスルーすべき。

620:デフォルトの名無しさん
07/04/29 01:26:48
>>618
どうでしょうね。
最近それっぽい人間がboostの使い方やら
ドラゴンブックの読み方を質問しまくってる状況だから
目的に向いてるか向いてないか、当人も判断できないんじゃないかと
思っていますが。

621:デフォルトの名無しさん
07/04/29 01:32:24
>>608
表紙が銀色とかのレクチャーノートシリーズね。・・・つかあの中から何を探せと言うんだ

622:デフォルトの名無しさん
07/04/29 10:21:04
あれは元々心当たりやポインタのないような人間が探すものなのか……?

623:デフォルトの名無しさん
07/04/29 23:03:44
F# ってまだ生きてるの?

624:デフォルトの名無しさん
07/05/01 00:27:37
仮想化とは対象物を不完全ながらもその性質や姿を模倣し現出させることだ。
対して抽象化は、対象物のある特徴的な側面を抽出し概念化することだ。
仮想化で抽象化の技術が使われることはあるだろうが、その逆は考え難い。
コンピュータを使い、扇風機やコタツを抽象化することはできても、仮想化する
ことはできないのだ。少なくとも今の技術では無理だ。コンピュータがその姿形
を変えることはできないのだから。コンピュータが仮想化できるものは、コンピュー
タそのものが直接扱うものだけだ。例えば、仮想メモリ、仮想ネットワーク、仮想
マシン、仮想キーボードといったものだ。

抽象化した結果表現されるものは、設計者が想定した概念やイメージだ。しかし、
実在するものそのものではなく、人が考えたものであるために、このイメージは
非常に脆く、不安定だ。外部からの影響をもろに受け、形を変え易い。個々人が
持つイメージの些細な相違から認識のずれが生じ易い。扇風機の使い方は人に
よって異なることはないが、人がイメージしたものは、その生成から、破棄に至る
まで、非常に不安定な状態になり易い。それを防ぐには、イメージそのものをなる
べく強固なものにし、インターフェースに一貫性と整合性をもたせ、外因による影響
を受けに難くく、壊れ難くするための技術を見につけ、理解を深めておくしかない。

625:デフォルトの名無しさん
07/05/01 21:13:14
URLリンク(www.cbook24.com)
既出?

626:デフォルトの名無しさん
07/05/01 23:16:09
今日M$の人にF#はどうしたのか2時間ぐらいしつこく聞いたら
話してくれなくなった...酷いよ

627:デフォルトの名無しさん
07/05/01 23:45:48
F#最近新バージョン出たばかりじゃないか。どこを見てるんだ

628:デフォルトの名無しさん
07/05/02 00:15:13
>>626
あれ?今日なんかイベントあったっけ?
それとも仕事で趣味の話?

629:デフォルトの名無しさん
07/05/02 03:55:15
>>626
F# 1.9が出て、Active Patterns(バナーナ構文)とか面白いものが出てきてるぞ。
少しは本家サイト見てみれ。

630:デフォルトの名無しさん
07/05/06 11:48:08
おい!気づいたんだが、Excelって関数型言語じゃね?

631:デフォルトの名無しさん
07/05/06 14:21:34
>>630
"Spredsheet functional programming" の話?
ずいぶん前にも似たような話があった気がするけど

632:デフォルトの名無しさん
07/06/07 20:16:24
Comegaが自然消滅したのを見ればF#が公式にVS一門に加わるまでは手なんか出せるはずが無い

633:デフォルトの名無しさん
07/06/07 20:30:08
>>630
あれは関数型言語ではなく、エンドユーザコンピューティングだ。

634:デフォルトの名無しさん
07/06/07 20:35:07
関数性とエンドユーザ性は直交しないの?

635:デフォルトの名無しさん
07/06/07 20:55:07
関数の無い言語って見たことないんだが

636:デフォルトの名無しさん
07/06/07 21:13:40
機械語やBrainfuckやPrologには関数がないんじゃない?

637:デフォルトの名無しさん
07/06/07 22:05:40
結構いっぱいあるよ

638:デフォルトの名無しさん
07/06/07 22:09:43
N88-BASIC とか

639:デフォルトの名無しさん
07/06/08 01:18:34
Fortressって関数型言語?

640:デフォルトの名無しさん
07/06/08 01:51:20
Prolog には関数あるよ。組み込みだけど。

641:デフォルトの名無しさん
07/06/28 06:49:48
まだあったのかこのスレ

642:デフォルトの名無しさん
07/07/01 15:20:52
関数型言語、あまりに動きがないな。
新しいことやってくれよ。

643:デフォルトの名無しさん
07/07/05 06:00:25
広まる前に枯れたから難しいな

644:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/10/03 23:13:32
foldとreduceは違うんじゃないの?
fold:リスト要素の型との戻り値の型はちがっても良い
reduce:同じ
じゃない?

646:デフォルトの名無しさん
07/10/05 08:47:15
俺もほぼ同義でいいと思うが、あえて分ければそうかもしれんね。
別の表現をすれば、最初の項を別途与える=fold、リストからとる=reduce ?

647:デフォルトの名無しさん
07/10/09 16:20:56
どうもありがとうございます。
ニュアンスに微妙な違いがあるんですね。


648:デフォルトの名無しさん
07/10/09 23:01:13
>>642
あたらしいことwww
URLリンク(www.blue.sky.or.jp)

649:デフォルトの名無しさん
07/10/10 00:01:42
スゲエ、笑けるw

650:デフォルトの名無しさん
07/10/10 02:07:38
>>648
なんぞこれwwwww

651:デフォルトの名無しさん
07/10/10 14:19:10
ドキュメントが英語なのが最大の笑い所な気がするw

652:デフォルトの名無しさん
07/10/10 15:48:39
>>648
これはワラタ。
けど、手で書きにくすぎる上に機械生成が簡単過ぎるので、
変態言語としては微妙な気がする。

あと、公式の「はいはいわろすわろす」を逆アセしてみたら、
サイズを節約するためのトリックが使ってあって面白かった。
URLリンク(up.uppple.com)

653:デフォルトの名無しさん
07/11/01 01:50:17
scalaってどうよ?

654:デフォルトの名無しさん
07/11/05 19:12:40
Genericsの互換性がないのが痛すぎる>Scala
F#のほうがよさげ。

655:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/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:デフォルトの名無しさん
07/11/15 23:11:06
Scala わかんないけど、それ単に key = 2 のリストを返してるだけちゃうん?

658:デフォルトの名無しさん
07/11/19 21:16:55
ハッシュの戻り値が Option に包まれているのが良いんです。
Javaだと null かもしれない Integer 型を扱う必要があるけど、
Scala なら Option[int] みたいな感じで、 無効な値を含む場合を陽に切り分けることができるっす。

これだけだと、無効な値を含むかどうかをチェックしなきゃだめでめんどくさいんですが、
Haskell でいう Maybe モナドみたいな書き方がサポートされているので、if文が必要なくなり楽ができます。

しかも JVMで動く型付きの関数型言語。ちょっと良さげだと思うです。
>>654 みたいな欠点はあるけど。

659:デフォルトの名無しさん
07/11/20 13:06:09
そのうちoption型は、どの言語も持つようになって、
それ前提にライブラリ構成されるようになるかもね。
C++もboost::optionってのがある。

660:デフォルトの名無しさん
07/12/06 07:18:16
つまりfailure-oblivious computingってやつ?

661:デフォルトの名無しさん
08/03/16 17:25:51
組み込み用にクロス開発できる関数型言語処理系ってありますか?

具体的に言うと、ARMやMIPS-RのGCCでスタティックリンクできるものがあれば
紹介して頂けないでしょうか。

662:デフォルトの名無しさん
08/03/16 20:58:12
optionalって.NETでいうとNullableみたいなもの?

663:デフォルトの名無しさん
08/03/17 03:39:13
nullでもnilでもなく、Noneですがそうです。

関数型言語的に言うと、domianがliftingされてるわけです。


664:デフォルトの名無しさん
08/03/17 10:54:19
どみあん

665:デフォルトの名無しさん
08/04/01 12:25:53
何度も出た話題かもで恐縮だけど、関数型言語の位置付けってこれからどうなっていくの?
手続き型より巨大になっていくか、融合していくか、今のままなのか。

666:デフォルトの名無しさん
08/04/01 13:37:07
未来のことなんてわかんねーyp

667:デフォルトの名無しさん
08/04/02 01:18:44
関数型言語が本流になることはないでしょうが、
プログラムに参照の透明性があるのは手続き型言語でも好ましいことなので、
関数型言語で産み出された種々の機構が
手続き型言語に結び付けられるのではないでしょうか。

668:デフォルトの名無しさん
08/04/02 04:15:20
50年間そうだったのだからそうだろう。

669:デフォルトの名無しさん
08/04/02 07:26:36
実際そんな感じだよな。

670:デフォルトの名無しさん
08/04/02 10:39:27
手続き型言語では簡単にできることが、
純粋関数型言語では困難なことがある。
その困難に立ち向かって獲得した手法は、
他の言語でも極めて有益なことがある。

不自由さの中で獲得した手法がきわめて豊穣である、
これは数学基礎論で起っていることと同じである。

671:デフォルトの名無しさん
08/04/02 10:51:01
関数型言語はきっと本流になるよ
主流の言語は確実にこっちに向かってる
少なくとも、そう信じないとやってられない

672:デフォルトの名無しさん
08/04/02 10:52:43
関数型言語は前と同じところに立っているのにな。

673:デフォルトの名無しさん
08/04/06 10:16:39
関数型って逐次処理は一切ないの?
それとも数学的に(ラムダ計算で?)合成可能な関数オブジェクトを持った
普通のプログラミング言語になるの?(つまりc#とか既に近い所にあるのか)

674:デフォルトの名無しさん
08/04/06 10:29:14
言語に逐次処理が組み込まれているかどうかは別として、
逐次処理が「表現できない」言語は実用にならないから、
普通の関数型言語はどれも逐次処理を表現できるようになってる

どうやって表現するかは言語ごとに違って、組み込みで持ってるの(Scheme,ML)とか、
データに関数を適用して、その結果に関数を適用して…という構造で逐次処理を表すの(Clean)とか、
処理自体を第一級のデータとして扱うの(Haskell)とか

675:デフォルトの名無しさん
08/04/06 10:34:35
関数型でも、Lispとかで逐次処理をだらだら書いてるソースを見かけると、
手続き型とあんま変わんなくね?と思うことがある。
一方で、非関数型でも、定義を並べる感じできれいに書かれてるものもある。
言語も重要だが、書き手の心構えのほうが影響でかい気がする。

676:デフォルトの名無しさん
08/04/06 10:41:26
レスどうも。ポインタありがとう。
やっぱ書き方というか設計によるところもあるんですね。

677:デフォルトの名無しさん
08/04/06 10:42:02
関数型言語はあくまで関数プログラミングを支援する言語だからな
Haskellで命令的に書くことも不可能じゃない

678:デフォルトの名無しさん
08/04/06 11:42:58
>>674
基本的には関数の評価が強制されることを利用して順序をつけるので同じじゃないかな

679:デフォルトの名無しさん
08/04/06 12:02:37
>>678
例えばSchemeの((lambda () a b c))でa b cが順に評価されるのを
「関数の評価が強制されることを利用」と表現するのは無理がないか?
Haskellの動作に至っては関数と全く(特定の処理系の内部実装の話を別にすれば)関係ない

680:デフォルトの名無しさん
08/04/07 01:32:03
論理型言語の現状はどうなってるの?


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch