1 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 20:28:13 ] haskell.org www.haskell.org/ 日本語サイト www.sampou.org/cgi-bin/haskell.cgi www.shido.info/hs/ 過去ログ 関数型プログラミング言語Haskell Part1 pc.2ch.net/tech/kako/996/996131288.html Part2 pc2.2ch.net/test/read.cgi/tech/1013846140/ Part3 pc8.2ch.net/test/read.cgi/tech/1076418993/ Part4 pc8.2ch.net/test/read.cgi/tech/1140717775/ Part5 pc8.2ch.net/test/read.cgi/tech/1149263630/ Part6 pc11.2ch.net/test/read.cgi/tech/1162902266/ Part7 pc11.2ch.net/test/read.cgi/tech/1174211797/ ・2chの仕様により、行頭の半角スペースは表示されません。 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
263 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 18:30:44 ] IORefもつかうか。
264 名前:デフォルトの名無しさん mailto:sage [2007/12/06(木) 18:38:36 ] a0 -> a1 -> ... -> m bの形の関数を呼ぶのにはmonadic functionという名前が使えるはず。 日本語だと「モナドな関数」か。 俺のコードの大部分はモナドな関数になってるな。 普通の関数より書きにくいから嫌なんだが、変更に強いコードにするために仕方なく。
265 名前:デフォルトの名無しさん [2007/12/08(土) 12:05:09 ] やさしいHaskell入門での質問です。 www.sampou.org/haskell/tutorial-j/classes.html > (ここで、同値性といっているのは、「値同値性」のことです。 > 対照的な概念としては、「ポインタ同値性」というのがあります。 > たとえば、Java 言語の == です。 > ポインタ同値性は参照透明性を持ちません。 > それゆえに純粋な関数型言語とは相性がよくありません。) なぜポインタ同値性は参照透明性を持たないのですか?
266 名前:デフォルトの名無しさん mailto:sage [2007/12/08(土) 12:26:42 ] >>265 ポインタ同値をテストする関数eqがあったとすると、 let v = [1,2] in eq v v はTrue。一方、vを展開して eq [1,2] [1,2] とするとFalseになるかもしれない。 参照透過って言うのはそもそも、こういう展開をしても プログラムの意味が変わらないってことだから、 eqによって参照透過性が破られたと言える。
267 名前:265 mailto:sage [2007/12/08(土) 12:37:55 ] >>266 おー!なるほど。わかりやすい説明ありがとう。 [1,2] が複数箇所に出現する場合、メモリ上に別々に配置されるかもしれないわけですね。 勉強になりました。
268 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 15:29:39 ] 『A a』っていう表記が使われる場所によって Aは型構築子、全体は多相型、aはパラメータ Aはデータ構築子、全体はデータ構造、aはその中身 aは型クラスAのインスタンス、何かの型の一部 って変わるのがちょっとわかりにくいね。もうちっとなんとかならんか。
269 名前:デフォルトの名無しさん [2007/12/09(日) 21:35:19 ] Haskell勉強してなくてよくわからないんですが、 乱数生成器をsplitしていくつかにしてseed固定で乱数を作れといわれました。 どう作ればいいんでしょうか? 初歩的な質問だったらすみません。
270 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 00:51:19 ] 日本語でおk
271 名前:デフォルトの名無しさん mailto:sage [2007/12/10(月) 15:07:15 ] 無限リストって便利だけど、末尾を正格に要求する関数について型安全じゃないよね。 でも無限リスト型を再定義するとリストに関して作ったすべての関数について委譲関数を作んなきゃいけなくて現実的じゃない。 結局これは妥協するしかないのか?それともなんらかのテクニックで回避できる?
272 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 10:46:48 ] >>271 日本語でおk
273 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 10:52:25 ] >>271 俺の知る限り、妥協するしかない
274 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 12:46:45 ] >>271 評価がとまらないだけで型安全だよ。
275 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 13:17:06 ] そう言えば、厳密に言うと無限ループでも型安全なんだな でも全域関数でない関数が厄介なことは事実だから、何か呼び名が欲しい
276 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 17:14:07 ] >>275 よくわかんないけど、チューリングの停止問題のこと言ってるの?
277 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 17:30:25 ] >>276 いや、Haskellには失敗し得る関数があるじゃん 例えば、headはリストが空の時例外を飛ばすし、 lengthは無限リストに適用されたら終わらない 一方で、例えばdropみたいに、引数に未定義値が含まれない限り、 あらゆる引数に対してちゃんと値をもどす関数もある だからこの二つを区別できるように、短い呼び名があれば便利だな、ということ 「型安全」という言葉を使いたくなるけど、これは>>274 の言う通り誤用だし
278 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 17:40:12 ] >>277 そういう一般的な関数のことを部分関数というんじゃないかね
279 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 18:03:01 ] >>278 全域関数も部分関数の一種だから、とか考えてたけどカジュアルに使う分には問題ないか グダグダですまん
280 名前:271 mailto:sage [2007/12/11(火) 19:46:50 ] いや、同じ構造のデータ型でも、 型システムで『無限リストかそうでないか』をカッキリ分けられたら、 そっちのほうが型安全にならないかな?と思って271を書いたんだけど。 たとえば幽霊型とか使ってそういうのが解決できないかとか思ったんだけど、 それじゃ現行の関数を活かせないし、あんまり意味ないなあ、と。
281 名前:デフォルトの名無しさん [2007/12/12(水) 01:00:18 ] >>280 言いたいのは、型システムを使って、 無限リストのフロー解析をして、 プログラムの停止性、正当性などを知ることができないかってこと? それならリストの有限性の抽象解釈をやるってことになると思うけれど。
282 名前:271 mailto:sage [2007/12/12(水) 01:16:01 ] >>281 違う。返り値が無限リストの関数で、その関数の型を明示しておけば、 無限リストに対して使ってはいけない関数の引数にした時に型エラーになるようにしたい。 まあ無理っぽいのでもう諦めてるけどな。
283 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 02:43:32 ] ※起こりえる全てのリストのうちどれが有限リストかを確かめることは 無限に長いリストに対して演算を行うことと同じ ってだれかが言ってた
284 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 07:57:59 ] だから誰も自動チェックしてくれって言ってるわけじゃないじゃない…… 静的に型推論してくれるんだから、 enumFromにInt a => a -> [a] Inf って書けるとして lengthに[a] Ltd -> Int みたいに指定したらコンパイルエラーになって欲しいとかそういう問題だって。無理だけど。
285 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 08:17:31 ] enumFromよりrepeatのほうが良かったな(repeat :: a -> [a] Inf) あとコンパイルエラーになって欲しいのは『length.repeat x』みたいな文脈な。
286 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 09:39:03 ] strictな言語なら、force/delayみたいに陽に指定するんだろうから、 >>281 の言うような方法も効果を挙げるだろうが、 lazyな言語だと、リストを生成する全ての関数が、 無限リストを返す可能性があるので>>276 でFAだが。 [1..]が無限リストであることも、解析が必要になるし。 うまくできるケースもあるが、希少すぎる。
287 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 11:18:26 ] >>271 が見事に無視されててワラタ
288 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 11:39:59 ] 言葉の使い方間違ってるよな。
289 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:16:57 ] なんというか残念賞な言語だな。 関数言語としてのおいしいところは全てC#3.0に持っていかれてしまった。
290 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:26:09 ] それはギャグのつもりでいっているのか
291 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 17:27:04 ] >>289 関数言語?w C#3.0?w
292 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 18:12:14 ] >>289 F#じゃなくて、C#かよ・・・
293 名前:Wadler [2007/12/12(水) 22:26:38 ] Haskell初心者です。 a->[a]という(型の)monad(仮にDとしましょう)をつりたくて困っています。 どなたか教えてください。 とくにDのmapFにあたる関数も教えていただけれありがたいです。
294 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:11:10 ] >>293 はい?
295 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 23:12:01 ] とりあえず、日本語でおkと言ってほしいのですか?
296 名前:デフォルトの名無しさん [2007/12/12(水) 23:13:50 ] >>295 日本語でおk
297 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 00:02:02 ] よくわからんが data D a = mkD (a -> [a]) instance Monad D where ... ってことか? あとmapFってなんだ?fmap?
298 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 01:20:15 ] >>293 よくわからんが、釣りってことか?
299 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 01:23:14 ] >>297 mkDはなぜ先頭が大文字になってないんだ? 受理されないだろ。
300 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 01:25:29 ] なんなんだ? 近頃Haskellerの質の低下が激しすぎるぞ
301 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 02:15:06 ] 昔からです
302 名前:デフォルトの名無しさん [2007/12/13(木) 02:20:10 ] 割と玉石混淆なイメージだね
303 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 02:23:35 ] 暇つぶしで弄ってる学生がここで暇を潰しているイメージ
304 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 08:17:19 ] >>299 >>303 そのとうりですすいません……
305 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:07:28 ] >>268-304 この辺からおかしくなってきてる
306 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:49:46 ] なんにしてもHaskellerが増えるのは喜ばしいことだ
307 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 11:51:12 ] rubyみたいになるぐらいなら少なくてもいい
308 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 16:58:02 ] 少数精鋭投入ならこれでいいだろうけど 大人数投入用にコードもデータもブラックボックスにできる仕組み(命令型のオブジェクト指向同等?)誰か作らないのかな
309 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:07:09 ] 大人数投入っていまどき流行らないよ 人海戦術でプログラミングする時代は終わった
310 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:23:49 ] >>308 ブラックボックス化ってどんなの? カプセル化なら標準のモジュールシステムがあるけど
311 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:28:42 ] >>308 そんなにオブジェクト指向がやりたいなら つ O'Haskell
312 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:30:17 ] でも、そもそもオブジェクト指向は型理論に包含されるものだから・・・
313 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 17:31:50 ] デバドラ屋と少数のhaskellerがいればたいていのプロジェクトは成功する ・・・夢を見た
314 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 18:14:01 ] >>308 そもそもhaskellにはオブジェクト指向は不要なんですよ。 というのも、関数の再利用できる範囲がCやらjavaやらとは桁違いに大きいのが特徴だからです。
315 名前:デフォルトの名無しさん [2007/12/13(木) 21:20:25 ] Haskellでモジュールつかってカプセル化してコード書いている人あまりいないような気がするんだけど気のせいかな。
316 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:22:03 ] なにを根拠に?
317 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 21:35:09 ] >>315 そもそもhaskellを使って実用アプリを公開してる人があんまりいないんだから 仕方ないだろ。
318 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 22:49:47 ] Haskellって関数型言語の勉強用じゃないの?
319 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 23:10:30 ] それだけのための言語だとどうして思うのですか?
320 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 00:39:15 ] GHC 6.8.2が出てるね。 GHCiの機能追加がメインっぽい。
321 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 00:53:25 ] HaskellはOOじゃなくて、 generic programing指向だからなあ。 Genericsの世界では最強認定を受けてる。
322 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 01:21:07 ] OfficeがHaskellで書きなおされるまで俺はその有用性を認めない。
323 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 02:29:17 ] スケーリングのための言語じゃないんだよな 工場制手工業ならOOであることやポピュラリティ(みんなが使ってること)は必須だ。
324 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 13:26:48 ] 別に必須じゃないし。 今流行ってること取り入れたってどうせちぐはぐになるだけ。
325 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 13:28:05 ] っていうかさ、人海戦術の奴隷商売に慣れすぎていて、理性的な考え方を失ったお猿さんですか?
326 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 14:15:06 ] ポピュラリティが必須というのは分かるけど、OOが必須というのはおかしくね? OOは一手法に過ぎないんだから、もっと良いものが知られればそっちが使われるようになるだろ
327 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 14:21:57 ] OOは現時点でのポピュラリティの1つって事ならわからなくもないけど、 わざわざ分けて必須って言うほどのものではないな。
328 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 14:54:59 ] つーか、OOはstableなlibrary構築にはいいんだけど、 意外とreusabilityが悪いから、 generic programmingが注目されているのが現状です。 Haskellのtype classとかC++のconceptみたいなやつ。 C++はtemplate/traitsでやってましたが、ちょっと非力なので、 Haskellのtype classそっくりの"concept"が入る事になりました。
329 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 14:59:18 ] 実際これはOOと比べてどうなんだとか思ってたんだけど 実際使ってみたら意外とオブジェクト指向のメリット包含しててSUGEEとか思った
330 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 14:59:57 ] >>328 日本語でおk
331 名前:328 mailto:sage [2007/12/14(金) 15:35:51 ] 日本語ですよ?
332 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 15:45:42 ] 決して英語が読めないわけではないが、 不自然だ 読みにくい 目が痛い
333 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 16:23:51 ] 理論はそのとおりなんだが、残念だがそんな理論を理解出来る人間は少数派なんだよ。 共産主義みたいなもん。高尚な理屈よりも明日パンが、今日のバグを潰せるかが問題なわけだ。 いいじゃない。Haskellは芸術的な小物を個人で作るのに向いてるってことで。
334 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:07:50 ] >>333 多数のバカよりも少数の優秀な人間でプログラミングしたほうが安く早くできます。
335 名前:328 mailto:sage [2007/12/14(金) 17:08:28 ] >>332 そういう意味か。すまん >>328 については、 journals.cambridge.org/action/displayAbstract?fromPage=online&aid=715036 で。探せばピィーディーエフも見つかるようです。
336 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:09:42 ] >>333 どの辺の理論のことを言ってるの?
337 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:10:46 ] >>335 不自然だ 読みにくい 目が痛い お前は日本語文書の常識を勉強したほうがよさそうだな
338 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:16:49 ] どっちにしろ、今みたいに人気がなくて、そのせいでライブラリも 周辺環境も整っていない状況だと、小物を個人で作るのすら満足にできん。
339 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:43:43 ] wxhaskellが使いやすい が、6.8系用が出てない・・6.6系は非公式
340 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:52:21 ] いまだと.NETやJavaVMに乗せちゃえばライブラリ不足は一挙に解決だな。
341 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:56:18 ] >>339 普通にdarcs版をビルドできないか?
342 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 17:56:46 ] >>340 なんで?
343 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 19:53:13 ] conceptの導入をもってHaskellはC++のサブセットになります つまりこれで全ての言語がC++のサブセットになるというわけです
344 名前:デフォルトの名無しさん mailto:sage [2007/12/14(金) 20:54:45 ] 本日をもってHaskellはウジ虫を卒業する 本日からHaskellはC++のサブセットである 兄弟の絆に結ばれる Haskellのくたばるその日まで どこにいようとC++は貴様らの兄弟だ 多くはベトナムへ向かう ある者は二度と戻らない だが肝に銘じておけ C++は死ぬ 死ぬために我々は存在する だがC++は永遠である つまり―――Haskellも永遠である!
345 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 07:46:00 ] 初心者質問です。 test = flip fun1 . fun2 の場合、 1. test = flip (fun1 . fun2) 2. test = flip (fun1) . fun2 どっちの意味なんでしょうか。(.)が使用されている場合、flipが対象とする 関数がどこまでかかるか分かんなくなってしまいました。
346 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 08:05:18 ] (.)よりも関数適用のほうが優先度が高いから答えは一応 2.なんだけど、 括弧の付け方としては (flip fun1) . fun2 のほうが正しい。
347 名前:345 mailto:sage [2007/12/15(土) 14:13:25 ] >>346 ありがとうございます。合成関数全体にかかるのかと思ってました。 もう少しいいでしょうか。 ja.doukaku.org/comment/4621/ にある、 attachIndex = map (uncurry (flip zipWith [0..] . ((,) .) . flip (,))) . zip [0..] がよく理解できないのですが、 (flip zipWith [0..] . ((,) .) . flip (,)) 0 "abc" の部分は zipWith (((,) .) $ flip (,) 0) [0..] "abc" と考えられると思うのですが、何ででしょうか。(flip zipWith [0..] . ((,) .) . flip (,)) の 第一引数"0"がまず部分適応されてflipされるところが理解できません。
348 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 14:41:26 ] (flip zipWith [0..] . ((,) .) . flip (,)) 0 から始める。まずこの式は(A . B . C) 0という形だからA (B $ C 0)に直せて、 flip zipWith [0..] ( ((,) .) $ flip (,) 0 ) これはflip A B Cという形だからA C Bと書き換えられて、 zipWith ( ((,) .) $ flip (,) 0) [0..]
349 名前:345 mailto:sage [2007/12/15(土) 15:29:30 ] >>348 ありがとうございます。しかし、まだちょっと理解できませんw 1.第一引数"0"の部分適応を行う 2.flip する の順番の根拠がよく分かりません。 (flip zipWith [0..] . ((,) .) . flip (,)) 0 "abc" の第二引数が最後に適応されるのは何故でしょうか。 あと、これは変な質問なんですけど、 (flip zipWith [0..] . ((,) .) . flip (,)) 0 "abc" の形を慣れた方は直接記述できちゃうんでしょうか。それとも、 zipWith ( ((,) .) $ flip (,) 0) [0..] "abc" の形から変形させていく形でプログラム書いていくんでしょうか。
350 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:37:45 ] >>349 Haskellでは基本的にどんな順番で簡約しても結果は同じだから、分かりやすい順序でやっただけ。 もっと実装に即した順序でやることもできるけど、面倒なだけな気がする。 >の形を慣れた方は直接記述できちゃうんでしょうか。 俺はできない。読むのも二分くらい掛かった。
351 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:42:07 ] あ、でもそのnobsunという人は日常的にそういうコードを書いてるみたいだから、 たぶんすらすら書けるんだろう。
352 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:46:11 ] 俺思うんだけどさ、デザインパターン中毒みたいにポイントフリー中毒ってあるんじゃないかなあ。 そーいうのって可読性犠牲にしてまでやるものなのか?
353 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 15:47:28 ] >>350 > Haskellでは基本的にどんな順番で簡約しても結果は同じだから、分かりやすい順序でやっただけ。 (flip zipWith [0..] . ((,) .) . flip (,)) 0 "abc" 自分がどうも腑に落ちないのは、どうして zipWith ( ((,) .) $ flip (,) 0 "abc") [0..] こうじゃないんだろう?ってとこなんですね。もちろん、こういう解釈だとダメなんですけど、 引数一つだけ取って、ある関数を返してから、次に行くってのがルールだったりするのかな、 と思ったのですが。 > 俺はできない。読むのも二分くらい掛かった。 そうですかw。いや、直感的に書ける人って凄いなぁって思ったんですが、なかなか そういう人はいないんでしょうかね。
354 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 16:02:39 ] >>352 デザインパターン中毒はどうか知らんが、この書きかたには 記述が簡潔になるという利点があるんだから、別にいいんじゃないかと思う。 >>353 Haskellの関数は常に一引数関数で、多引数関数は カリー化でエミュレートされているだけだということを思い出すべし。 (.)も両辺を一引数関数として合成するから、 (f . g) a b と f (g a b) は等しくない。
355 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 16:05:04 ] 些細なことだけど > (f . g) a b この括弧なんとかならないかな
356 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 16:13:51 ] >>354 > Haskellの関数は常に一引数関数で、多引数関数は > カリー化でエミュレートされているだけだということを思い出すべし。 そうでしたw。 いやぁ、ありがとうございます。スッキリしました。
357 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 16:36:06 ] >>355 >219に戻れ
358 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 16:43:36 ] >>357 >>219 とは趣旨が違う > (f . g) a b この括弧はうっとうしいなぁと言ってるだけなんだよ。 $みたいに括弧省略したい
359 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 17:10:55 ] 俺はその格好が好きだ
360 名前:デフォルトの名無しさん [2007/12/15(土) 17:31:40 ] ML でも (foo o bar o baz o foobar) quux みたいに書くね
361 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 20:25:33 ] >>358 お前は何を言っているんだ
362 名前:デフォルトの名無しさん mailto:sage [2007/12/15(土) 21:14:46 ] >>361 心で感じろ
363 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 01:37:28 ] >>361 風を感じろ