スレタイ以外の言語もok
前スレ
次世代言語17 Go Rust Kotlin TypeScript Julia
https://mevius.5ch.net/test/read.cgi/tech/1567602619/
次世代言語18 V Julia 他
■ このスレッドは過去ログ倉庫に格納されています
2019/09/30(月) 23:11:51.54ID:gS2Jpksn
752デフォルトの名無しさん
2019/10/19(土) 08:58:11.03ID:7c9LDTMs flatmapがモナドとか言ってる奴何一つ型を分かってない
flatmapはモナドのbindを拡張した概念であって、bindそのものじゃない
要するにflatmapが使える時点でモナドじゃない、モナドのような何かだ
それをモナドと混同してる時点で論外
そいつの話を聞く必要はない
flatmapはモナドのbindを拡張した概念であって、bindそのものじゃない
要するにflatmapが使える時点でモナドじゃない、モナドのような何かだ
それをモナドと混同してる時点で論外
そいつの話を聞く必要はない
753デフォルトの名無しさん
2019/10/19(土) 09:36:17.45ID:g/FUkYaY >要するにflatmapが使える時点でモナドじゃない、モナドのような何かだ
自分がなにもわかってないっていう自己紹介かな
「モナドとして振る舞える」ものはモナドだよ
モナドよりできることが多かったとしても
自分がなにもわかってないっていう自己紹介かな
「モナドとして振る舞える」ものはモナドだよ
モナドよりできることが多かったとしても
754デフォルトの名無しさん
2019/10/19(土) 10:16:08.33ID:QmPBAH4r モナド警察現るw
モナド = bindableでもいいけどbindって何?ってなるだろ
flatmapはmapの続きで理解できるからbindって言葉よりも理解しやすい
Optional<T>を例にすると
mapはOptional<T> -> ( T -> U ) -> Optional<U>
Optional<T>とTをUに変換する関数を受け取ってOptional<U>を返す
flatmapはOptional<T> -> ( T -> Optional<U> ) -> Optional<U>
Optional<T>とTをOptional<U>に変換する関数を受け取ってOptional<U>を返す
mapの場合、受け取る関数が( T -> Optional<U> )だと結果がOptional<Optional<U>>になって二重に包まれる
flatmapはこういう二重に包まれた結果にならないようmapする機能とネストした型をflattenする機能が合体したもの
IOやStateには当てはまらないとかいう奴も居るけど
mapだとIO<IO<T>>になるところをflattenしてIO<T>にするのは同じ
flattenするルールが包みの種類によって違うだけ
モナド = bindableでもいいけどbindって何?ってなるだろ
flatmapはmapの続きで理解できるからbindって言葉よりも理解しやすい
Optional<T>を例にすると
mapはOptional<T> -> ( T -> U ) -> Optional<U>
Optional<T>とTをUに変換する関数を受け取ってOptional<U>を返す
flatmapはOptional<T> -> ( T -> Optional<U> ) -> Optional<U>
Optional<T>とTをOptional<U>に変換する関数を受け取ってOptional<U>を返す
mapの場合、受け取る関数が( T -> Optional<U> )だと結果がOptional<Optional<U>>になって二重に包まれる
flatmapはこういう二重に包まれた結果にならないようmapする機能とネストした型をflattenする機能が合体したもの
IOやStateには当てはまらないとかいう奴も居るけど
mapだとIO<IO<T>>になるところをflattenしてIO<T>にするのは同じ
flattenするルールが包みの種類によって違うだけ
■ このスレッドは過去ログ倉庫に格納されています
