[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 05/09 17:08 / Filesize : 172 KB / Number-of Response : 681
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

関数型言語Part IV



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/



91 名前:デフォルトの名無しさん mailto:sage [04/05/05 21:31]
25-90は全てゴミ。あぼーんよろ

92 名前:デフォルトの名無しさん mailto:sage >>91=>>20なんだろな、やっぱ [04/05/06 08:04]
>>6, >>14-15, >>24-91 全部スレ違いのゴミ。全削除よろしこ

93 名前:デフォルトの名無しさん [04/05/07 00:36]
ちなみに、このサイコ>>48は、
>>1は、関数型言語Part1の頃から居る住人だということも知らずに、
>>48のような薄っぺらい煽りをしている。
しかも>>48は、会うたび、事ある毎に、サイコな言動を繰り返して、周囲を引かせている。
これこそ、病気と言わずして、なんと呼ぶべきだろう。

94 名前:デフォルトの名無しさん mailto:sage [04/05/07 01:23]
サイコがまたまた意味不明なコピペしてるし。(((;゚Д゚))ガクガクブルブル


95 名前:デフォルトの名無しさん mailto:sage [04/05/07 01:26]















↓つぎ、毎日が日曜日のサイコくんが、朝10:00頃起きてカキコ予定

96 名前:デフォルトの名無しさん [04/05/07 01:35]
一日中張り付いてるの?

97 名前:デフォルトの名無しさん mailto:sage [04/05/07 01:44]
誘導: サイコへのレス、サイコレスへのレス、ネタは、特上のサイコ自身が立てたスレでどうぞ。
     【面減る】ム板廃人列伝【最古】
pc5.2ch.net/test/read.cgi/tech/1083734838/

98 名前:デフォルトの名無しさん mailto:sage [04/05/07 01:49]

どうでもいいけどさこのウィルス付きのページ作ったのお前?

ttp:// blog.makuhari.or.jp/sysad/archives/ 000198.html

Aranskでも偽者でもいいんだけどさぁ。
犯罪だよ。
捕まってもしらないよ。

99 名前:デフォルトの名無しさん mailto:sage [04/05/07 02:01]
2ch荒らすのも結構なんだけどさぁ。
お前の事快く思わない奴らがしつこく、警視庁にメール
おくったら如何なると思う?
俺は知らないよ。



100 名前:デフォルトの名無しさん mailto:sage [04/05/07 05:42]
支離滅裂なサイコ犯罪者キタ━(゚∀゚)━( ゚∀)━(  ゚)━(  )━(゚  )━(∀゚ )━(゚∀゚)━!!!!

101 名前:デフォルトの名無しさん mailto:sage [04/05/07 05:45]
無差別ウィルステロの、犯人を、>>98です。

102 名前:デフォルトの名無しさん mailto:sage [04/05/07 05:50]
(・∀・)>>98タイーホ!!!

103 名前:デフォルトの名無しさん mailto:sage [04/05/07 05:58]
>>98 (・∀・)通報シマスタ!!

104 名前:デフォルトの名無しさん [04/05/07 06:14]
>>98
あ〜あ、ついにやっちゃったね♪

前は国家公務員の名前と身分を詐称して、
スレが即刻削除されてたけど、
今度は>>98タイーホ&板削除かなw

ム板のみんなに謝っとけよw

105 名前:デフォルトの名無しさん mailto:sage [04/05/07 07:30]
100-
今更、あわててウィルス消しても警視庁にログ提出しておきましから。


106 名前:デフォルトの名無しさん [04/05/07 07:41]
>>98が逮捕されるのか。
大変だな。

107 名前:デフォルトの名無しさん [04/05/07 08:23]
>>100-106への反応はこちらへ
pc5.2ch.net/test/read.cgi/tech/1083734838/

108 名前:Aransk [04/05/07 18:14]
>7が純粋関数型言語、8が副作用付き手続き型言語、10が制約型言語って
>感じなんでしょうか?
この意見そんなに変かねぇ?機能的意味論の範疇を単に
言語仕様によって分けたように見えるが…。^m^
表示的意味論と言えば何故?
Haskellにおける遅延評価、無限リストや関数部分適用、なんかがさぁ。
どうして話題にならないの?こちらの方がはるかに言語学的には
表示的意味論に近接してると思うけどねぇ?






109 名前:デフォルトの名無しさん [04/05/07 19:32]
↑このAranskの中の人、チンポ生えてそうだなw



110 名前:Aransk [04/05/11 14:53]
Winny作者の上司として、武市さんって人がニュースで
誠に遺憾とか言ってたが、あれ関数型言語で著名な
武市先生だよね?

111 名前:デフォルトの名無しさん [04/05/11 15:25]
つか犯罪ともおもえんけどね。

112 名前:デフォルトの名無しさん mailto:sage [04/05/11 15:37]
つーか具体的な容疑は何よ?

113 名前:デフォルトの名無しさん mailto:sage [04/05/11 20:53]
包丁に罪はないが、
包丁を作った人間に問題がある様だ。


114 名前:デフォルトの名無しさん mailto:sage [04/05/11 22:17]
>110
武市先生キター
上司というより研究科長としてコメント求められたのだろうと思う。
社長が社員についてコメントするようなものだと解釈したが…

115 名前:デフォルトの名無しさん mailto:sage [04/05/11 23:50]
遺憾て、京都府警が?
wktm.moe-nifty.com/13hz/cat752960/index.html
wktm.moe-nifty.com/13hz/2004/04/post_5.html

116 名前:デフォルトの名無しさん mailto:sage [04/05/12 04:01]
遺憾ていうより、たのしい。
wktm.moe-nifty.com/13hz/2004/03/post_25.html

117 名前:デフォルトの名無しさん mailto:sage [04/05/12 04:25]
>>113
包丁屋には住みにくい世の中になりそうだな。
ところで包丁屋が使った金槌(VisualC++か?)を作った人間にも罪は及ぶのか?
その金槌は包丁だけでなく鉄砲やピッキング用具を作るのにもよく使われているようだが。

118 名前:Aransk [04/05/12 16:33]
>117
>VisualC++か?
やっぱ、AlegroLispかなんか関数型言語じゃあWinnyは
ちょっと無理なのかぁ。(-_-;)


119 名前:デフォルトの名無しさん mailto:sage [04/05/12 20:32]
作者はシミュレーション屋さんじゃなかったっけ>Winny



120 名前:デフォルトの名無しさん [04/05/12 21:55]
Frantzのシャチョさんとハーレクインのシャチョさん、どっちが儲かってるんだろう?
というか、関数型言語業界で一番成功したビジネスマンって、何やってる人なんだろう?

やっぱ、APL関連かな(泣笑

121 名前:デフォルトの名無しさん mailto:sage [04/05/13 00:56]
>>113
その例えだと、まるでその包丁そのものには悪意がないみたい。
その包丁には、作った人の悪意が確実に込められてるわけだし、
第三者が手に入れた時点でほぼ確実に凶器なる様に仕組まれている。
そして他の目的で使う人間は事実上いない。
とくれば、その包丁が罪な物に変わりはないと思うよ。


122 名前:デフォルトの名無しさん mailto:sage [04/05/13 01:19]
確かに、例えについてはちんぴら共が逝った通り、包丁よりも拳銃の方が的確。
拳銃所持を基本的権利と考える連中が居るように、それに対する考え方はそれぞれ。

>>118
別に出来ないことはないでしょ、GUIさえあれば。
ライブラリ不足は根性でどうにかなる。
暇なんでnyみたいだけどム板住人向きのファイル共有ソフトつー
のを作ってみるわ。もちろん純粋関数型言語ネイティブな。少しまちなー。(嘘)

123 名前:デフォルトの名無しさん mailto:sage [04/05/13 01:22]
「このソフトを沢山の人が使えば、現在の著作権概念を覆すことが出来るぞ。ヒヒヒ…」
だなんてことは言ってないような>作者
つかスレ違い

124 名前:デフォルトの名無しさん mailto:sage [04/05/13 02:35]
>>120
すでにハーレクィンは以下略な感じだけども。
エクスアナリス?とファンクショナルオブジェクトに分離?

125 名前:Aransk [04/05/13 15:12]
中村正三郎さんって、まあネットでは知られたプログラマー
つ〜か、アンチ・マイクロソフトの塊のような人ですが、
Lisp、Schemeで人生の価値観が変わった!って
どこかで書いていた。関数型言語って嵌る人は嵌るんですね。
アンチMSが多いのもGNU・Lispのせいかな?

126 名前:デフォルトの名無しさん mailto:sage [04/05/13 18:41]
Lispの何処が関数型なんだか。Schemeだって、ちょっと関数型っぽい
だけだろ。

127 名前:デフォルトの名無しさん mailto:sage [04/05/13 19:39]
>>126
Lispが関数型言語かどうかはさておくとして(私には分かりません)、
あなたの関数型言語の定義を教えてください。

128 名前:デフォルトの名無しさん mailto:sage [04/05/13 21:15]
>>126
関数型の定義が昔と今とで変わっただけだよ。


129 名前:デフォルトの名無しさん mailto:sage [04/05/14 05:34]
>>126
でも関数型屋が関数型言語の歴史の話をするときに絶対言うのが
「関数型言語の歴史はLISPから。すなわち手続き型とほぼ同じ長さの歴史がある。」
だという罠



130 名前:デフォルトの名無しさん [04/05/14 12:50]
おまぃら、手垢のついた蘊蓄並べあってて、何が面白いのですか?

やぁねぇ〜、ヲタの会話って評論家みたいでぇ〜。自分ではナニも出来ないくせに(プ

131 名前:Aransk [04/05/14 14:32]
Lispが関数型言語の中では最も実用されているのは
事実です。またIDEにしてもAlegroLispはGUIBuilder
からDB機能までついており他の言語と遜色ありません。
長い歴史と言い、その言語仕様の歪み=実用性の高さ
と言い、他を圧倒しております。(GNULispも含め)
ワタクシFranzから一銭も頂いておりません。
念の為^m^


132 名前:デフォルトの名無しさん mailto:sage [04/05/14 14:38]
>>131
デヴスは自分のスレに帰れよ

133 名前:デフォルトの名無しさん [04/05/14 19:02]
LISP覚えてよかっっっっっっっっっった!
毎日が楽しいです

134 名前:デフォルトの名無しさん mailto:sage [04/05/14 19:40]
私はLispの副作用のせいで末期ガンになり、医者にも「残り半年」と見放されました。
ところが友人の勧めでMLに変えたところ、なんと3ヵ月後ガンが消えてました!
医者もびっくりです。毎朝スッキリ目が覚め、15Kgのダイエットに成功し、
宝くじは3億円当たり、巨乳の彼女もでき、人生が楽しくてしかたありません。
ありがとうML。
(宮城県 酪農家 28才)

135 名前:デフォルトの名無しさん mailto:sage [04/05/14 20:38]
haskell版もよろ

136 名前:デフォルトの名無しさん [04/05/15 00:40]
たかが言語で何能書きたれてるんだ?あん?


137 名前:デフォルトの名無しさん [04/05/15 03:18]
おまぃら、手垢のついた蘊蓄並べあってて、何が面白いのですか?

やぁねぇ〜、ヲタの会話って痴呆性老人の繰り言みたいでぇ〜。

いつまでたっても同じ事を繰り返し言ってるだけぇ〜、

話が面白くない殿方って、勉強も仕事も恋愛も中途半端って感じぃ〜。

138 名前:デフォルトの名無しさん [04/05/15 03:21]
Aranskって実物も痛そうだけど、
2ちゃんの自称Aranskってチンポ生えてるし、
痴呆入ってるし、なんだかとてもきもい。

139 名前:デフォルトの名無しさん [04/05/15 09:58]
俺はチン毛小六の時からはえだしたぜ




140 名前:デフォルトの名無しさん mailto:sage [04/05/15 11:27]
てか、Aranskはあのヘンテコなページ内容も含めて
関数型言語系のスレッドでは結構前から叩かれてきたように記憶しているのですが
なぜか最近「ここのAranskは女、別物」説を声高に主張して、腐女子だのチンポだの
連呼する人が突然わいてきましたね。これって何?

141 名前:デフォルトの名無しさん mailto:sage [04/05/15 12:33]
Aranskのジサクジエン

142 名前:デフォルトの名無しさん [04/05/15 12:54]
>>140
ホムペ見れば、おねたんて判るだろ。
おまぃの目は節穴でつか?

143 名前:デフォルトの名無しさん mailto:sage [04/05/15 12:57]
ホムペのは、私立女子大文学部卒の土方プログラマって感じがぷんぷん。
2ちゃんのは、COBOL運用歴30年もう定年ってな手垢な感じがぷんぷん。

よって、ホムペの中の人と、2ちゃんの中の人は、別物。

144 名前:デフォルトの名無しさん mailto:sage [04/05/15 13:01]
Aranskの話題はあっちでやれよ

145 名前:デフォルトの名無しさん mailto:sage [04/05/15 13:27]
>>142-143
???
あとさ、なんでいつも二回にわけてレスつけるの?

146 名前:デフォルトの名無しさん mailto:sage [04/05/15 13:36]
ほむぺぇー

147 名前:デフォルトの名無しさん mailto:sage [04/05/15 14:16]
aranskは単なる少女マンガオタのデブオタクだろ。
2chのaranskも同じ人物。
頭おかしいんだからそっとしておいてやれ。


148 名前:デフォルトの名無しさん [04/05/15 15:44]
2ちゃんのPSYCHOからかうとおもれぇYOOOOOO!

149 名前:Aransk [04/05/15 16:48]
今日久々に新しいLisp本を本屋で発見!
Cutt社???「楽しいLisp入門」です。
全然楽しくないんですがぁ。(-_-;)
まだ、グレアムのLisp本の方が良かった。




150 名前:デフォルトの名無しさん [04/05/15 17:42]
Cuttの本は、最初っからあんまパッとしないよ。
たしか一冊目は、Lisp処理系の本だけど、何を今更みたいな素人じみた内容だたー。
最近は営業考えて、オプソに接近してたみたいだけど、
まだLispにこだわってるのかぁ〜。Lispファソとして恥ずかしいな、

151 名前:デフォルトの名無しさん mailto:sage [04/05/15 20:49]
カットシステム「やさしいLisp入門」
www.cutt.co.jp/book/4-87783-102-9.html
書名もまともに憶えられないくらい楽しくなかったのですね。

自分は大学生協で見かけたけど、目次をめくって、マクロのマの字も
出てこなかった時点でカス本だと思いました。


152 名前:デフォルトの名無しさん mailto:sage [04/05/15 22:14]
やっぱLISPを使う醍醐味はマクロだよね!

153 名前:デフォルトの名無しさん mailto:sage [04/05/16 17:21]
このスレのテンプレにAransk、ヒーロー勇気は放置と
今度から明記してください。

154 名前:デフォルトの名無しさん mailto:sage [04/05/16 17:36]
Aranskとム板廃人列伝の1が二人で(一人で)会話してるだけのような
気がするんだが。

155 名前:デフォルトの名無しさん mailto:sage [04/05/16 18:40]
>>154
あんた妄想癖が激しいな。
実生活だいじょうぶ?

156 名前:デフォルトの名無しさん mailto:sage [04/05/17 11:56]
あまりにも見事に釣り上げられてますね…

向こうでもこっちでも、何でそんなに手当たり次第必死で噛みついてるんですか?
煽り方がずーっとワンパターンなのは何故ですか?
いちいち口調を変えて名無しで連投し、指摘されると
「ショムニ」を真似してみただけだよ!そんなこともわからないなんてバッカミタイ♪
とか意味不明な開き直りをするのは何故ですか?
>>148は突っ込みに返せなくなっての負け犬の遠吠えですか?

157 名前:Aransk [04/05/17 16:23]
>151,152
正直ワタクシも最初はLISPやSchemeのマクロに感激いたしました。
でも、どうなんでしょう?
C++のオペレーター・オーバーロードでも間違いやすい。
文法まで変更できる能力って?
極端な話、同一言語であるアイデンティティーそのものまで
変更できるってことですよね?
一人で開発するのは良いけど、多人数になった場合に
マクロの徹底なんかどうしておられるのでしょうか?

158 名前:デフォルトの名無しさん mailto:sage [04/05/17 20:02]
てゆうか、プログラム言語ってのは使うための道具で決して飾り物ではないと
思います。なんにもできない(開発しない)のに道具ばかり選んでても意味
ないのでは。最近は Lisp に御執心のようですが ML や Haskell は結局
使いこなせなかったということですか?

159 名前:デフォルトの名無しさん mailto:sage [04/05/17 21:12]
そもそもlispなんてS式なのをいいことに
その場で問題に適した言語を作る
ぐらいの勢いで使うものだと
思うのだが。




160 名前:デフォルトの名無しさん [04/05/17 22:48]
相変わらず、脳内就業時間終了と同時に、暇々サイコが粘着してるのが笑える。
あっちのスレもねw

161 名前:Aransk [04/05/18 14:54]
>158
>ML や Haskell は結局使いこなせなかったということですか?
仰る通りです。結局、言語仕様を読み、ちょこっと試用した
だけで終わってしまいましたぁ。^m^
>159
>その場で問題に適した言語を作る
お差支えなければ、そのご自分でお作りになった
「その場での問題に適した言語」の一端でも
ご披露頂けないでしょうかぁ?(*^^)v


162 名前:デフォルトの名無しさん mailto:sage [04/05/18 15:01]
"Aransk"はアボーン設定しろよ。ここの住人は馬鹿だろ。
構ってチャンにエサやるな。

163 名前:Aransk [04/05/31 16:11]
>213 :デフォルトの名無しさん :04/05/31 12:54
>Aransk様, TXL ttp://www.txl.ca/ の使用レポートおながいします。
向こうのスレはいくらなんでも、「あの顔だけ」はどうしても
許せない!って泣くメンバーがおりまして…。
今のところお出入り禁止命令が…。
全く似てないのか?それとも…似過ぎているのか?(^。^)y-.。o○
そこで代わりに、こっちでご回答を致します。
Queen's University, Kingston, CanadaこれだけでAransk様は
至極お気に入りで御座います。(*^^)v
ただ、define 〜end define構文がどうしても美的センスに
合わないようで…(^_^;)






164 名前:Aransk [04/06/01 15:25]
define 〜end define構文ってさぁ、プリプロセッサコマンドの
マクロ定義を連想させない?(^_^;)

165 名前:デフォルトの名無しさん mailto:sage [04/06/01 23:21]
VBを連想する。
嫌な気持ち。

166 名前:Aransk [04/06/02 13:11]
>165
VBよりは、Parsing機能は高そうですよ。(*^_^*)

167 名前:デフォルトの名無しさん [04/06/08 21:25]
>C言語の特徴を説明する上で、よく「関数型言語」という言葉が用いられます。
>これは、C言語が、関数が集まって形作られる言語であることに由来しています。
ttp://homepage3.nifty.com/mmgames/c_guide/01-01.html


168 名前:デフォルトの名無しさん mailto:sage [04/06/10 19:51]
>>167
>167
お〜 知らんかったよ
「 C言語の特徴を説明する上で、よく「関数型言語」という言葉が用いられます」

Cはずいぶん書いたけど C は使ったことないしな
main関数なんて書いたこともない

169 名前:デフォルトの名無しさん [04/06/11 19:12]
関数型言語っぽいビルドツールってありますか?
makeはちょっとあれなので、他にいいものがあれば
参考にしたいです。



170 名前:デフォルトの名無しさん mailto:sage [04/06/11 19:26]
関数型言語 make
ttp://spa.jssst.or.jp/2003/program/papers/03007.pdf

171 名前:デフォルトの名無しさん [04/06/11 21:54]
C#かJavaから呼び出すのに適した関数型言語ってどれ?
Haskell.netっての試したけどC#から呼び出すのはうまくいかなかった。
逆はかなり簡単だけど。

172 名前:デフォルトの名無しさん mailto:sage [04/06/11 23:41]
試したことないけど F# は?

173 名前:デフォルトの名無しさん mailto:sage [04/06/18 18:09]
>>170
時間がなくて真面目に読んでなかったけど、
これなかなか面白いかも。Perlで書きなおしてみようかな。

174 名前:デフォルトの名無しさん mailto:sage [04/07/08 00:07]
ttp://pc5.2ch.net/test/read.cgi/tech/1036013915/394
394は俺じゃないけど、helloworldとか足し算とかどうやるのか教えてクレクレ。

175 名前:デフォルトの名無しさん mailto:sage [04/07/08 10:06]
ざっと見たけどコンビネータ理論で本当にプログラミング言語つくっちゃったっ
て感じなのか? s とか k とかが乱舞してるね。すげ。

全然読んでないけど、真ん中らへんに helloworld っぽいのがあるし、足し算
もそのちょっと下にあるね。チャーチ数使うのかよ。
The function <add> which adds two Church integers is ^m`$m<inc>, i.e. ``si`k`s``s`ksk
だそうだ。

176 名前:うーん mailto:sage [04/07/11 22:00]
コメントとかで解説されないと
ぜんぜんわかんねえや。

177 名前:デフォルトの名無しさん mailto:sage [04/08/08 16:28]
ちょっと質問があります。
例えば、「お風呂を沸かす」を関数モデルで表現すると、どうなるんでしょうか。
わたしの脳みそでは、

1. 風呂に水を張る
2. 湯沸かし器を点火する
3. いい湯加減になるまで沸かす

のようにしか考えられませんが、これって手続き的ですよね。


178 名前:デフォルトの名無しさん mailto:sage [04/08/08 17:24]
よくわからんが
いい湯加減になるまで沸かす(湯沸かし器を点火する(風呂に水を張る))
じゃだめ?

179 名前:177 mailto:sage [04/08/08 18:32]
>>178
どうもです。
関数モデルだと手続き表現は、ただ関数の入れ子が深くなることで表現できる、ってことですね。
この場合、各関数の入力としてお風呂変数(水の高さ、温度、風呂釜の状態)を入れ、それを元に新しいお風呂変数を返す、って感じですか。

いい湯加減になるまで沸かす(湯沸かし器を点火する(風呂に水を張る(お風呂変数)))
→新しいお風呂変数





180 名前:洩れ車@藤四郎 mailto:sage [04/08/09 07:37]
>>177
 以下、若干J言語の記述法を用いることをお詫びしますが、できるだけ分りやすくします。

(1)大枠としてはまずこう考えてはどうでしょうか。

 h(x) を h(x) =: f(g(x)) と定義することを h =: f @ g と表記すると、
(「=:」は定義を、「@」は関数の合成を意味する。@ は小さい白丸と似たようなもの)

  お風呂を沸かす =: いい湯加減になるまで沸かす @ 湯沸かし器に点火する @ 風呂に水を張る

 x は「世界」である。「お風呂を沸かす」は、「お風呂が沸いていない世界」に働き掛けて、
「お風呂が沸いた世界」を得るための手続あるいは操作あるいは関数である、と。

つまり、

  お風呂が沸いた世界 = お風呂を沸かす(お風呂が沸いていない世界)
(「=」は相同を意味する)

 途中経過は、

  風呂桶に水を張っただけの世界 = 風呂に水を張る(お風呂が沸いていない世界)
  加熱中の世界 = 湯沸かし器に点火する(風呂桶に水を張っただけの世界)
  お風呂が沸いた世界 = いい湯加減になるまで沸かす(加熱中の世界)

ってことで。「世界」が大袈裟なら「風呂周りの系」でも可(と言うか適切かも)。

181 名前:デフォルトの名無しさん mailto:sage [04/08/09 07:38]
(続き)
(2)ただですね、「新しいお風呂変数」みたいな動的制御っぽい話になって来ると、

  風呂周りの系 =: (0, 20, 0) NB. 初期値の構造体。(初期水量, 初期水温, 初期火力)
  水量 =: 0&from NB. 構造体「風呂周りの系」から水量を取り出す関数。
  水温 =: 1&from NB. fromはn番号の要素を取り出す2変数関数だが、Currying(projection)
  火力 =: 2&from NB. を行う&演算子を用いて具体的な場所を指定済の1変数関数を作った。

  風呂に水を張る =: 250&(0 amend) NB. 構造体の0番目の要素を250で置き換える関数。
  湯沸かし器に点火する =: 0.1&(2 amend) NB. 火力を0.1で置き換える関数。
  いい湯加減になるまで沸かす =: 単位時間沸かし続ける ^: _
(「^: _」は、結果が定常状態になるまで操作を繰り返させる後置演算子です。つまり、
f ^: _(s) は、x=f(x) となるまで f(f(f(...(s)...))) を繰り返し、その時の x を返します)
  単位時間沸かし続ける =: ( NB. 実引き数は仮引き数 y. に代入される。
   if. 41.5<: 水温(y.) do. y. return. end. NB. 終了条件は中で判定(汚いが)。
   y.=. ((水温 + 火力)(y.)) (1 amend) y. NB. 「=.」は局所定義/局所再定義。
   NB. ↑構造体の1番目を、構造体の1番目と2番目との和で置き換える手続。
   y. return.
  )

みたいなやり方がやや関数的と言えるのではないでしょうか。

182 名前:デフォルトの名無しさん mailto:sage [04/08/09 22:29]
けっきょく「あれやってこれやって……」という順番があるのだから、それは
その順序が得られるように書くしかないわけで、関数的に書くというのはちょっ
と変なんじゃないかなぁ。
個々の関数を副作用なしに書く定義を書いといて、

空の風呂 >>= 水を入れる >>= 点火 >>= 火を止める

とかあたりでは。

183 名前:デフォルトの名無しさん mailto:sage [04/08/09 23:59]
「お風呂を沸かす」というのがすでに手続き的な表現かと。

184 名前:デフォルトの名無しさん mailto:sage [04/08/10 01:02]
関数的には? 「湧いたお風呂を得る」?


185 名前:デフォルトの名無しさん [04/08/10 09:37]
>>184
馬鹿


186 名前:177 mailto:sage [04/08/10 10:00]
>>180 - 181
ありがとうございます、、でも半分も理解できてないような、、ごめん。

最近、関数モデルの言語で、「手続きモデルを適用したほうがすっきりする問題」をうまく扱えるのかなあ、と思っていました。
結局、「順番に実行する」というのは、関数を順番に適用→関数を入れ子にする、で簡単に置き換え可能、と理解しました(でいいですよね?)。


187 名前:デフォルトの名無しさん mailto:sage [04/08/11 15:00]
Haskell ならモナドでやるよ、ってことで >>182 を書いたんだけどな……。
>>= は演算子で、 Monad a => a b -> (b -> a c) -> a c の型を持つ。ちょっ
とわかりづらいけど、初期の値を順に関数に通して結果を得るための演算子だ
と考えてくれていい。

他にも、関数のリストを作って畳み込むことで結果を得るという考え方もある
と思う。ステートが違うだけで同じ型の変数であると考えれば、
風呂 = foldl apply 空風呂 [ 水を入れる, 点火, 火を止める ]
where apply :: a -> (a -> b) -> b
apply x f = f x
とかね。

もちろん、 Haskell にも do 〜 のような述語があるし、
ML 系にも begin 〜 end が(たしか)あるから、手続的に書こうと思えば割と
簡単に書けるよ。

188 名前:177 mailto:sage [04/08/11 19:04]
>>187
あ、ごめんなさい。>>182 で">>="の意味がまったくわからなかったもので。
関数型言語でも、手続き的にしか考えられないものは手続き的に考えるしかない、ってことですか、、
メインが関数モデルで、必要悪で手続きモデルを使う、みたいな。

組み込み屋の戯れ言にお付き合い頂いてありがとう。
少しすっきりしました。

189 名前:187 mailto:sage [04/08/12 00:05]
必要悪というか、結局最終的には「これやって」という操作の部分が出てくる
のは当然なわけです。関数の定義それ自体で動くわけではないですから。

なので、スタイルとして
1. 各関数の定義を宣言的に書く
2. 最後にそれをごちゃっとまとめる
というステップで書くとよろしくやってくれる、という考え方なんだと思いま
す。
むろん C でも綺麗に書こうとすればそういうスタイルはありだと思いますが、
関数型言語でやった方が圧倒的に書きやすいのです。




190 名前:177 mailto:sage [04/08/12 07:57]
>>187
なるほど、、
私は、関数型言語使う人って、プログラムを全部関数的に構築したいのかなあ、って妙な誤解をしてました。
お話きいてると、その辺は割とあっさりしてる感じですね。

191 名前:デフォルトの名無しさん mailto:sage [04/08/13 06:05]
よく耳にする「(純粋)関数型言語に代入はない」というのはミスリーディングな発言だと思う.

「関数型言語では代入の必要になる場所は少なく,使ったとしても隔離できる」






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<172KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef