関数型言語Part IV ..
[2ch|▼Menu]
222:デフォルトの名無しさん
04/10/23 07:36:35
>>221
>>216
> C, Perl, Ruby, Java も一通り触った事はあって、
これだと高階関数やクロージャも使いこなせてないだろう。

Haskellで彼には新しいだろうこと
* 遅延評価、代入のないプログラミング
* Type-driven programming
* コンビネータ(Lispのマクロに相当するが関数)による構文抽象と言語内言語
* モナドによるコントロールフローの抽象化
* Existential type、type class、といった高度な型システムの"創造的な"利用
    (オブジェクトの代替、オブジェクト自体やグローバル変数の実装、コンテナ、型システム内での計算...)

223:221
04/10/23 08:01:28
私は216じゃないです。

224:デフォルトの名無しさん
04/10/23 09:05:35
>>222
>Type-drivenprogramming

これってどういう事?
Java を指して Class-driven programming って言っちゃうような感じ?

225:デフォルトの名無しさん
04/10/23 11:30:48
構文解析するとかなら
MLやSchemeがお手軽だよ

226:デフォルトの名無しさん
04/10/23 14:31:08
>>223
知ってる。

>>224
まず型から考えて、型が合うようにプログラミングすれば
アルゴリズムがついてくるような感じ。

227:デフォルトの名無しさん
04/10/23 17:49:17
>>225
そもそも構文解析プログラムなぞ作らなくても、MLなら構文木を
表す型を定義すればいいし、Schemeなら適当にS式にmappingする
やり方を決めてそれで書けばいいと思うのだが...


228:216● ◆SKjzm2Ah6.
04/10/23 17:49:44
>>219
今段ボール箱から取り出して見たらオライリーじゃなくて
ASCIIの「Emacs Lisp リファレンスマニュアル」でした。。

とりあえず今起きたので、>>220のHaskellスレの>>1
載ってたどっかの大学の日本語サイトを見て勉強してます。

>>222
> 高階関数やクロージャも使いこなせてないだろう
これさえさっぱり分かりませんし、
> Haskellで彼には新しいだろうこと
は当然全部意味不明です。。

これから頑張ってみます。

スレリンク(prog板)
で「漏れって天才!」とかほざいていたんですが、
自信喪失しました。ごめんなさい。

229:216● ◆SKjzm2Ah6.
04/10/23 18:02:05
>>222
あ、なんかウェブサイトをちょっと読んでて思ったんですけど、
ひょっとしてこうかい(←なぜか変換できない)関数って
C でいう関数ポインタとか Rubyでいう proc (lambda) を
受け取るような関数のこと??
C++ の標準テンプレートでも似たようなことしてるかな。
全然的はずれだったらハズいですけど、、

230:216● ◆SKjzm2Ah6.
04/10/23 18:08:54
>>222
あ、「クロージャ」で Google 検索したら
URLリンク(capsctrl.que.jp)
が出てきました。Ruby では普通に使う手法ですね。
業務じゃ全く使ってませんけど。(C++ じゃ使えない?)

231:デフォルトの名無しさん
04/10/23 20:44:56
高階(たかしな)関数

232:216● ◆SKjzm2Ah6.
04/10/23 20:54:22
>>231
ほんとだ、それで変換できました。
漢字の読み方も知らなくって本当に恥ずかしいです。
うっかり人前で「こうかいかんすう」なんて読んでしまう前に
正しい読み方を教えてもらってよかったです。
ありがとうございました!

233:デフォルトの名無しさん
04/10/23 21:01:37
>>229-230
そうなんだけど、もっといろんな使いかたがあるし、よく使う。
関数型になれると、他の言語でも同じ様な書き方ができることに
気づいたり、あるいは、できないことに気づいたりするよ。

C++は関数オブジェクトを駆使するといろいろできるけど、
ポリモーフィズムが無理だし、第一凄く面倒だからやらないね。

>>232「こうかいかんすう」であってるよ(w。君のIMEの辞書が良くないだけ。

234:デフォルトの名無しさん
04/10/23 23:10:13

大昔、国語の朗読で

「先ずもって」を「さきづもって」と読んだ奴思い出したさげ

235:デフォルトの名無しさん
04/10/23 23:20:46
>>231
たかしな関数ワロタww
俺が教わった数学の先生に高階(たかしな)先生という人がいたんだよ。
彼が一大発見して関数に名前がついたら区別がつかんようになるなあ。


236:デフォルトの名無しさん
04/10/24 01:22:23
>>216
あなたの経験からすればそんなに入門は困難じゃない.
Ruby 使ったことがあるなら Array#map とか関数型の影響を受けた機能を知ってるハズ
(そうとは知らずに使ってたんだろうけど).
あと Ruby の Proc はまさに(関数型言語で言う)クロージャの特別な場合.
よく使う用例に特化してる分ちょっと弱い.
Cの関数ポインタとクロージャの決定的な違い,
すなわち「静的スコープ」とか「環境」とかについてゆっくり勉強するといい.
実装を解説してる文書を探すのもといいと思う.

型システムは,あんまり便利で驚くことうけあい.
特にパラメータ型多相(C++のテンプレートと似てる)と
OOPで言う「継承によるポリモルフィズム(部分型)」をうまく統合してるのが特徴.
Javaとか「なぜこんなに表現力がしょぼい?」って気がしてくる(最近変わりつつあるけど).
ただ,ヴァリアント型は構文のせいでよくこんがらがりやすいけどね...
(コンストラクタなのか型の名前なのか,あとtypeとdata)

Haskellはかなりラディカルな言語なんでCとかとはギャップが大きいけど,面白いことは色々あるよ.

237:デフォルトの名無しさん
04/10/24 01:23:24
sage忘れスマソ

238:デフォルトの名無しさん
04/10/24 02:04:48
なんかいろいろ勉強するっていうと堅苦しいんで、実際に入門ページとか見て
自分でコードしていきながら概念を掴んでいく方がいいと思うよ。で、大雑把
にわかってから、その辺をキーワードに調べていくといいと思う。
# っていう意味で「ゆっくり勉強」って書いたんだったらスマソ

漏れは Ruby を書いても割と関数型スタイルで書こうとしちゃうんだが、けっ
こう書けるし、 Ruby 知ってるなら抵抗感はそこまでないと思うな。

型について補足すると、このテの関数型言語には型推論という機能があって、
最低限自分が書きたいところだけ「これはこの型」っていうのを提示すれば後
はオーケー(別に型を敢えて指定する必要はない)、っていうところも、プログ
ラマの負担軽減って意味では重要だと思う。


Haskell はラディカルすぎるんで挫折するかもしれないから、 ML 系言語から
攻めて行った方がいいかと思う一方、あれくらいラディカルじゃないと関数型
言語の面白さが全部は伝わらないのかもという気もしていて、どっちを勧める
かは正直、悩むな。
漏れは京大の五十嵐先生の OCaml の講義録から興味を持ったクチなので、
Haskell がなんだかわからなかったら OCaml を勧めとくよ。モナドとか型ク
ラスとかいった小難しそうな(新しげな)のはなんにもない。そんかわり関数型
言語としては綺麗じゃない。


239:デフォルトの名無しさん
04/10/25 08:31:29
>>236
perlはmy変数(Cのローカル変数と同じスコープを持つ変数)を
無名関数の定義の時点で保存できる。でもグローバル変数は
当然上書きされてしまいます。これはクロージャというには
中途半端な代物なんでしょうか?

perl -e '&{&{sub{my $v=1;$f=sub{print $v};$v=2;$f}}}'
しかも無名関数を定義した後にも、それを上書き出来ちゃうし。

240:デフォルトの名無しさん
04/10/25 08:47:01
Erlang って全然話題にならないね。やっぱりみんな型付きマンセーなの?

241:/= 236
04/10/25 09:18:11
>>239
それらの性質は問題ない。
グローバル変数が上書きされたときにクロージャ内のものまで
かわるのは普通だし(Schemeでもそう)、local変数がどうなるのかは意味付けの問題。

Haskellではそもそも上書きされたりしないからそういうことは考えなくていい。
# Perlでのlocal変数に当たるimplicit parameterというものがあって
# それを使うと上書きされたような挙動が実現できる。

242:デフォルトの名無しさん
04/10/26 02:30:50
>>238
そんなときはConcurrent Clean

243:デフォルトの名無しさん
04/10/26 02:34:33
>>236
> Ruby 使ったことがあるなら Array#map とか関数型の影響を受けた機能を知ってるハズ

SmalltalkのCollection#collect:の影響とも言われているな

244:デフォルトの名無しさん
04/11/01 14:28:46
だれかVALIDの言語仕様みられるところ知らない?

245:デフォルトの名無しさん
04/11/28 00:08:44
型推論のあるOO言語
URLリンク(boo.codehaus.org)

(URLリンク(www.rubyist.net)より)
> 新言語。
> * Python文法
> * 静的型
> * 型推論
> * CLI上で動作


246:デフォルトの名無しさん
04/11/28 13:28:36
つかちゃんと型宣言した方が(・∀・)イイよ

247:Aransk
04/12/13 19:15:16
関数型言語IoがサーバーとVM,UI付きで発表されました!
URLリンク(www.iolanguage.com)
IoDesktop-2004-12-06 vm + server addons + ui addons 20M
日本語ドキュメント:
URLリンク(f21.aaa.livedoor.jp)

純粋に関数型かどうかは別にして一応、
Io is small prototype-based programming language.
The ideas in Io are mostly inspired by Smalltalk
(all values are objects), Self, NewtonScript and Act1
(prototype-based differential inheritance, actors and
futures for concurrency), LISP (code is a runtime
inspectable/modifiable tree) and Lua (small, embeddable).
となっています。
ぱっと見、良さ気な言語に思えますが、
少なくともbooよりは…。

248:Aransk
04/12/13 19:43:09
Ioに興味なくても、この言語の製作者であるデコルテさんの
好きな言葉だけでも必見の価値があると思う。
URLリンク(www.dekorte.com)
良い言語を作りそうな感じがするでしょう?


249:デフォルトの名無しさん
04/12/13 21:36:31
ミニマルなプロトタイプベースのOO言語だな。
面白いと思うけどこのスレで扱う内容か?

それにしても非常に検索しづらそうな名前だと思うが……。


250:デフォルトの名無しさん
04/12/14 13:22:13
Aranskにマジレス禁止

251:Aransk
04/12/14 16:05:05
LISP (code is a runtime inspectable/modifiable tree)
Ioは一応Lispに影響されたとあります。また、イオってギリシャ語で
月を意味するそうです。Lunaに影響されたとあります。

では,関数型言語の総本山の話題です。
URLリンク(www.lisperati.com)
見られました?
GNU CLispはお奨めと書いてあります。
URLリンク(ciapek.uci.agh.edu.pl)
IDEツールもあるようです。

and of course it has a few bugs.
If you find one, please, let me know
(a fewとoneに味がある…)

and if you've got any informations about zionist
conspiracies, please, let me know

and if you've got any idea about how to solve
the middle-east conflict or war in Iraq, please, let me know

in other cases, please, don't let me know

VCLisp作者のこのコメントは笑えませんか?
>>250
don't let me know ってか?(藁)


252:デフォルトの名無しさん
04/12/15 01:31:52
関数型言語ってどこが一番嬉しいところなんだろう。副作用ないとこ?
抽象化が簡単にできるとこ?
クロージャ(無名関数でも可)がつくれるとこ?


253:デフォルトの名無しさん
04/12/15 07:53:16
言語のコミュニティに馬鹿が少ないとこ。

254:デフォルトの名無しさん
04/12/15 11:18:58
Aranskがいる

255:Aransk
04/12/15 13:24:10
関数型言語の良いところ:
マイナー感が適度にあるところ
言語エリート意識をくすぐるところ
仕事で使う必要がないところ
言語コニュニティー構成員の
世間的知名度の低いところ。
雑誌の記事や本には、ならない。
売れない、儲からない。
それでも関数型言語に拘るのは
馬鹿とまでは言いませんが
結構かすっている人々が多いと
思われ。PrologやAPLなんかよりは
まだましですが。今や過去の遺物と
なりつつあるCOBOLやCと比べても
かなり実用性には欠ける。
その点でRubyなんかのファンと
似た心情と考えております。
タイガーズファンとも…。



256:デフォルトの名無しさん
04/12/15 13:28:00
>>255
他の言語でも応用が効くんだよね。

257:デフォルトの名無しさん
04/12/15 14:19:53
池沼はスルー

258:デフォルトの名無しさん
04/12/15 20:04:33
Ioはスレ違い
関数型でもないし目指してるとこが違うだろ
つーか↓過疎スレなんだから盛り上げてやれよw

プロトタイプベース・オブジェクト指向
スレリンク(tech板)

259:デフォルトの名無しさん
04/12/15 23:23:30
>>256
つーことは、
他の言語にない概念を関数型言語から学べる、というのが一番嬉しい
ってことか。


260:Aransk
04/12/16 13:52:29
>>259
マイナー言語に嵌るタイプの人々を観察しながら
あぁだぁ、こうだぁ、と評論家的に語るのが
一番嬉しいってこと。これは関数型言語に
限らない。
つまりインドとか中国はまだそんな余裕がない。
JavaやC++なんかの稼げる言語で稼ぐのに
必死であり、マイナー言語なんかをトロトロ
やってる暇がないのです。
関数型言語は特に実用性に欠けるでしょう?
そこが成熟社会における魅力でもある訳です。
やっても世間的に意味のないことが
オタク心理をくすぐる訳なんです。
いってみれば閑散とした田舎の鈍行列車
ですって。
URLリンク(www.lisperati.com)
これなんかまさにLispの特徴を
うまく表現していると思うけどねぇ。
「だから、どうなの?」って言われると
困るところも含めて…。

261:デフォルトの名無しさん
04/12/16 21:14:29
>>260
学際的な視点からの意見は?

262:デフォルトの名無しさん
04/12/17 04:51:08
【計算機プログラムの構造と解釈】 P212

  オブジェクトモデルは、世界をばらばらな部品に分割することで、それを近似する。
  関数型モデルはオブジェクト境界に沿っての部品化はしない。オブジェクトモデルは
  「オブジェクト」の非共有の状態が、共有の状態よりずっと大きい場合に有用である。
  オブジェクトの視点が失敗する場所の例は、量子力学で、そこでは物を個々の粒子と
  考えると矛盾と混乱に陥る。オブジェクトの視点と関数的視点の統合は、プログラ
  ミングより基本的認識論に見るべきものがある。

この「基本的認識論」と呼ばれるものについて知りたいのですが、何か参考になる
文献など、ご存知でしたら教えてください。

263:デフォルトの名無しさん
04/12/17 05:27:38
>>262
認識論の基本ということであれば、観念論的立場だが、ヘーゲルを
読むのがいいと思う。ただし「精神現象学」から入るのは止めた方が無難。

264:Aransk
04/12/17 12:49:16
>>262
「ケインズの哲学」伊藤邦武著 岩波書店
お奨めです。いきなりヘーゲルはきついと思われます。
ご承知の通り、ケインズは本来経済学者です。
従って本書中にある確率論はとっつき易い。
すくなくともヘーゲルより
「オブジェクトの視点と関数的視点の統合は、プログラ
  ミングより基本的認識論に見るべきものがある。」
的な視点と近いものがあります。



265:Aransk
04/12/17 13:18:56
>>261
URLリンク(www.shiro.dreamhost.com)
簡潔さは力なり---Succinctness is Power---
Paul Graham, May 2002.
Quote:
Arcで階乗を高階関数で次のように書きたくなければ:
(rec zero 1 * 1-)
つぎのような再帰的な表記を使っても良い:
(rfn fact (x) (if (zero x) 1 (* x (fact (1- x)))))
私は例をすぐに思い付けないけれど、言語が簡潔すぎることが
可能かどうかという問いには興味がある。ごちゃごちゃ固まって
理解不能なようにしかコードを書けないような言語なんて
あるだろうか。誰か例を思い付いたら、是非見てみたい。
Unquote:
URLリンク(sonic64.hp.infoseek.co.jp)
Perl one liner 集 perl 1行野郎
Quote:
ファイルを文字単位ですべてひっくり返します
perl -0777e 'print scalar reverse <>' f1 f2 f3 ...
Unquote:
(rec zero 1 * 1-)

perl -0777e 'print scalar reverse <>' f1 f2 f3 ...

簡潔性において上が勝るが可読性では下が勝る。
また上の例など返って間違う可能性が高い。
「さこそ」とぞおおせいでたまいけり。
誰が言っているのか、何を言いたいのか
つぶやいてみたかっただけなのか、
さっぱり分からん、状況に極めて
類似してないだろうか?


266:デフォルトの名無しさん
04/12/17 18:48:41
よろづに時といふは必らず見るべきものなり -- 樋口一葉

267:デフォルトの名無しさん
04/12/17 21:09:38
>>263
哲学や物理学のようなものではなくて、認知科学や実験心理学のような
ところの研究成果で、素人にも分かりやすく整理されている何かおもしろい
ものはないかな、と勝手に期待してました。
ヘーゲルは大昔に「論理学」を読んだことがありますが、難しくてさっぱり
分りませんでした。
>>264
>的な視点と近いものがあります。
どう近いんでしょうか?私の知りたいのはアクロバットな認識というよりも、
全ての人が理解しうるようなもっとプリミティブなものです。

というわけで、この話題スレ違いだし電波臭いので終わり、です。

268:Aransk
04/12/26 17:12:25
ドイツ観念論ばりばりのヘーゲルよりは
イギリス経験論の流れをくむラッセルーケインズ
なんかの方がプログラミングには近いと思うのです。
また、ケインズは本職が経済学ですから
哲学の専門家よりは用語は分かりやすく
基本的なところから入っています。
さらにご承知のとおりケインズは
イギリスの大蔵省に長く勤めた実務家です
から、論理に浮いたところが少ない。
そのケインズの哲学を日本人が解説して
いるいわば新書版感覚で読める本と考えて
推薦しただけで他意はありません。
オブジェクト指向も関数指向も命題の
切り取り方にある訳です。従って
ケインズの説くA−>B命題に帰納される
際の蓋然性の束という概念があるいは
「オブジェクトの視点と関数的視点の統合」
という観点になんらかの寄与をするかも
しれないなと考えている次第です。




269:デフォルトの名無しさん
05/01/08 12:57:55
Aranskの文章の起承転結をおしえてください

270:デフォルトの名無しさん
05/01/08 18:34:06
妄想に始まり承、転はなくて妄想に終わる。


271:デフォルトの名無しさん
05/01/09 18:56:33
全体で見ると恒等写像ですか?

272:Aransk
05/01/16 15:23:47
>全体で見ると恒等写像ですか?
流動的で不確実な世界を
モデル化するための視点と
方法における蓋然性の束と
考えて下さい。写像そのものに
既に蓋然性と選択性が入りこんで
いるような。

273:デフォルトの名無しさん
05/01/16 18:14:03
脳の腐りかけた文章発見!!

274:デフォルトの名無しさん
05/01/17 02:54:01
名前をよく見ろ。腐りかけてるんじゃなくて腐ってるんだ。

275:デフォルトの名無しさん
05/01/17 05:12:09
>蓋然性の束

これはどういう意味ですか?興味あるので詳しく教えてください。
イジワルではありません。

276:Aransk
05/01/17 17:28:17
>>275
申し訳ないが「蓋然性の束」を概念を一から
説明するとなると結構大変なんです。
そこでまず以前にご紹介した「ケインズの哲学」の
該当部分をお読み頂くか、宮台先生のBlogにおける
社会学入門の7回以降辺りを読んで頂けないでしょうか?
URLリンク(www.miyadai.com)
凡その概念を把握されてから、それをプログラミング
パラダイムにどう応用するのか一緒に考えて
みようじゃありませんか?

277:Aransk
05/01/18 18:32:30
>>275
ここである程度「蓋然性の束」の概念を
ご理解頂ければ:
URLリンク(www.nanoelectronics.jp)
「量子力学から確実に分かる唯一の情報は、確率だけということになる。」
このプログラミングパラダイムへの道が開けるのでは
ないでしょうか?
申し訳ありませんが、これ以上は企業秘密と言う事で
ご勘弁下さい。




278:デフォルトの名無しさん
05/01/19 00:07:36
Arnaskに新書いじょうのものは理解できない
ということはよくわかった。

279:Aransk
05/01/20 13:52:53
新書以下にも付き合うのが「しんどい」ってことも
分かってくれた?

280:デフォルトの名無しさん
05/01/20 18:38:23
隔離スレが機能してない。
嫌がらせか?

281:デフォルトの名無しさん
05/01/21 03:39:07
このスレッドは天才研究者「Aransk」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                         霊長類研究所

282:デフォルトの名無しさん
05/01/21 03:44:59
>>281
矛盾。

283:デフォルトの名無しさん
05/01/22 01:35:36
>>279
自分の文章を読むのもしんどそうですね

284:デフォルトの名無しさん
05/01/23 00:50:54
せっかく本人が削除しやすい名前付けてくれてるんだから
専用ブラウザで見ようぜ。

285:デフォルトの名無しさん
05/01/23 05:43:47
キチガイはスルーが一番キツイらしいからね

286:デフォルトの名無しさん
05/02/01 17:16:45
MSのF#もだいぶすっきりしてきた様に思いますが…
UNICODEやDLも使えるそうな、
案外MLの本命になるかもね?
URLリンク(research.microsoft.com)
1.0リリース直前!MLはF#、ScriptはGroovyで決まりか?(笑)

287:デフォルトの名無しさん
05/02/01 17:18:48
なんでそこでGroovy?
意味わかんねえ

288:デフォルトの名無しさん
05/02/01 21:59:58
>>286 書き方が Arnask っぽい
本人ですか?

289:デフォルトの名無しさん
05/02/01 22:25:26
>>288
アルナスク?だれですか

290:デフォルトの名無しさん
05/02/02 00:24:55
シャア=アナルスキ

291:Aransk
05/02/02 15:08:44
>>288
なんで分かるの?正しくは「Aransk」だかんね。
>>287
>なんでそこでGroovy?意味わかんねえ
寄らば大樹の陰です。世の中の常識では?(笑)

292:デフォルトの名無しさん
05/02/02 15:26:08
アナルスキー関連はこちらへ
超準関数型言語Aransk
スレリンク(tech板)

293:Aransk
05/02/03 15:26:38
ワカリマセンよ。
気付いたら関数型言語はF#しか残ってないかも?


294:デフォルトの名無しさん
05/02/03 15:29:36
アナル好き?がいしゅつ(←なぜか変換できない)

295: ◆AnalSexRiQ
05/02/03 16:15:33
Anarsk関連はこちらへ。以後スルーよろしく
超準関数型言語Aransk
スレリンク(tech板)

296:デフォルトの名無しさん
05/02/03 23:38:37
ScriptはRuby!きまってんだろ!?
ああ?

297:デフォルトの名無しさん
05/04/10 15:39:32
LLLLLLLLLLLLLLLLLLLLLLLLLLL
      A  .  I   .
LLLLLLLLLLLLLLLLLLLLLLLLLLL

298:デフォルトの名無しさん
05/04/21 04:36:46
>>264
そりゃケインズの確率論(フェロー応募論文のやつだよね)はほとんど哲学だからな。
数学とはいえないだろう。そういう意味では難解ともいえるな。

299:デフォルトの名無しさん
05/04/29 08:40:25
fortran, C, C++, JAVA, Perl, Python で科学計算の経験はあるのですが、
趣味で関数型言語を勉強してみたいと思っています。ML系、Haskellの
どちらかから始めて、次にLispに進もうと思っていますが、前2者のどちら
がお薦めでしょうか?

300:デフォルトの名無しさん
05/04/29 10:03:11
どっちでも可。
ただ、言語として綺麗なのは Haskell。また、 ML は「純粋な」関数型言語で
はないので、 Haskell の方を勧める。

つか、挙げてる中では Lisp 系が一番楽だと思う。本もいっぱい出てるし。


301:デフォルトの名無しさん
05/04/29 12:03:48
>>299
HaskellよりMLの方が馴染みやすいと思うよ。
MLよりもLispの方が馴染みやすいと思うよ。
でも、何の為にそれらの言語を覚えるの?
確かに、違う言語のパラダイムを見ることはプログラミングテクニックの向上にはなるけれど。

302:299
05/05/01 23:43:20
きっかけは Maxima という数式処理プログラムが lisp で書かれているのを
知ったからです。ただ、lispは括弧が多いし何となく古くさい感じがするので
どうせなら新しい言語をと思ったのです。

303:デフォルトの名無しさん
05/05/02 03:56:28
言語を覚えるのなんてその先の道程にくらべればたいした手間じゃないんだから
興味のある対象で使われてるものから手をつければいいのに。


304:デフォルトの名無しさん
05/05/03 07:02:37
> 何となく古くさい感じがするので
> 何となく古くさい感じがするので
> 何となく古くさい感じがするので
> 何となく古くさい感じがするので
> 何となく古くさい感じがするので

305:デフォルトの名無しさん
05/05/03 07:53:47
>>302
古臭いと言われちゃうとなあ……ええ、古いし括弧だらけですよ?
さておき、まずこちら辺りを眺めてみては。

独習 Scheme 三週間
URLリンク(www.sampou.org)
やさしい Haskell 入門
URLリンク(www.sampou.org)

まあ、他の方が言っているように Lisp 系が一番入り易くはあるでしょう。
善かれ悪しかれ何でもありなので、どんなスタイルでもとりあえず書けるから。
Lisp 系で手続き型っぽい書き方から関数型っぽい書き方に
頭を馴らしていくのが障壁は低めじゃないかなーと。

306:デフォルトの名無しさん
05/05/04 18:45:21
>>302
Lispを侮ってはいけない。
確かに関数型言語の思想からはみ出している部分はあるが、
それでも関数型言語の原型であり到達点であることには疑いがない。

若干宗教的偏執はあるが、
URLリンク(www.shiro.dreamhost.com)
が面白い。下記は引用。

>Java、Perl、Pythonと順に見て来ると、おもしろいパターンに気づくだろう。
>少なくともあなたがLispハッカーであればきっと気づくはずだ。
>各言語は次第にLispに近付いてきている。
>PythonはLispハッカーの多くが間違いだと思っている機能さえコピーしている。
>簡単なLispプログラムなら、ほぼ一行毎にPythonに変換することすら可能だろう。
>2002年の今になって、プログラミング言語はようやく1958年に追い付こうとしている。

307:デフォルトの名無しさん
05/05/04 21:10:07
関数型言語の勉強を始めたら、Cを書くのが遅くなった。
意味もなく考えすぎてしまうようになった。これはいいことなのか
悪いことなのか・・・

308:デフォルトの名無しさん
05/05/08 13:54:06
ポピュラーサイエンスに「プログラマは頭使わね。」
みたいなこと書いてあったからいいんじゃね。


309:デフォルトの名無しさん
05/05/24 11:25:14
遅延評価を実装してる言語って、Haskell, Clean, 他に Python もそうなの?
どーせ勉強すんなら普段とは違った性質がある言語がイイと思って。

310:デフォルトの名無しさん
05/05/24 18:02:46
>>309
Pythonは違う

311:デフォルトの名無しさん
05/05/24 20:00:30
遅延評価なんてちょこっと処理系のコード弄ればできちゃうのに。

312:デフォルトの名無しさん
05/05/24 20:56:16
>>311
……………まあ、いいや。

313:デフォルトの名無しさん
05/05/25 01:19:04
>>310
> Pythonはリストの内包表記といくつかの遅延評価メカニズムを備えているから
URLリンク(www.shiro.dreamhost.com)

314:デフォルトの名無しさん
05/05/25 01:34:15
とはいっても square(2+3) が (2+3) * (2+3) に
なるわけではないし


315:デフォルトの名無しさん
05/05/25 02:05:56
>>313
根拠を挙げるならPythonの遅延評価に関る機能を挙げなさいよ。
「備えている」てだけの発言を引いたって意味ないよ。


316:309 = 313
05/05/25 03:41:06
Python 使った事ないでつ。
「遅延評価メカニズムを備えている」って書いてあったから、そーなのかなと思ったでつ。
不勉強で申し訳ないでつ。

317:デフォルトの名無しさん
05/05/25 07:33:05
最近 C が関数型言語なんじゃないかって気がしてきた

318:デフォルトの名無しさん
05/05/25 15:26:48
そうかもね。でも高階関数の型の構文は変だよ。例えば
  f : (int -> float -> short -> char) * int -> float -> short -> char
みたいな型は
  char (* (* f (char (* (* (*) (int)) (float)) (short), int)) (float)) (short);
みたいに書かなければならないし。

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 も 閉  鎖 か ! ?


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

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