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


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

関数型プログラミング言語Haskell Part8



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
風を感じろ






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

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

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