関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト)
http://www.haskell.org/
前スレ
関数型プログラミング言語Haskell Part28
http://echo.2ch.net/test/read.cgi/tech/1428597032/
探検
関数型プログラミング言語Haskell Part30 [無断転載禁止]©2ch.net
レス数が950を超えています。1000を超えると書き込みができなくなります。
2017/01/15(日) 23:43:54.28ID:Vh4eztBk
890デフォルトの名無しさん
2017/08/17(木) 07:36:41.55ID:+LfjPFPQ すいません許してください。何でもしますから
891デフォルトの名無しさん
2017/08/18(金) 00:54:02.54ID:/Ug8Ilbd モナドってインタフェースみたいなもんでいいのか?
つまりなんでもアリにしちゃうと、設計上様々な不整合があるから
「こういうモナド」を最初に規定してしまい、「モナドに合致しない」記述は
コンパイルで弾いてくれるの?
つまりなんでもアリにしちゃうと、設計上様々な不整合があるから
「こういうモナド」を最初に規定してしまい、「モナドに合致しない」記述は
コンパイルで弾いてくれるの?
892デフォルトの名無しさん
2017/08/18(金) 01:40:52.19ID:DcI2Tm3Y モナドはDSLプラットフォーム
893デフォルトの名無しさん
2017/08/18(金) 08:52:35.38ID:JMfuFDdS 文脈だって言ってんダロ
文脈を保ちながら普通の値と同じように扱うための規則を定めたものがモナド
文脈を保ちながら普通の値と同じように扱うための規則を定めたものがモナド
894デフォルトの名無しさん
2017/08/18(金) 09:06:56.52ID:t41bY7Zb haskellはモナドじゃないものもコンパイル通しちゃうよ
モナドであることの保証は自分でするしか
モナドであることの保証は自分でするしか
895デフォルトの名無しさん
2017/08/18(金) 09:22:11.27ID:xzRfloCT >>891
モナドってより型クラスがインターフェースに近い。
んで、モナドは型クラスの一つでしかない。
等値を司るEq型クラスのインスタンスになれば=が使える。
大小比較を司るOrd型クラスのインスタンスになれば<や<=が使える。
それと同じ。
逐次処理を司るMonad型クラスのインスタンスになれば>>=とreturnが使える。
IOモナドはIO型を受け取るモナドってだけ。
素のモナドを使うのがほぼIO型しかないからIOモナドって一緒くたにされるけど、IOとモナドは分けて考える。
リストやMaybeもモナドのインスタンスなので、モナドでもある。
モナドが他の型クラスと違うのは、メソッド定義(インターフェースになる関数や演算子をインスタンスになる型で定義)の時にモナド則に則って書く必要があるということ。
それとモナド則を正しく定義できたかは型クラスには無関係なので、定義した人が正しさを保証する必要があるということ。
モナドってより型クラスがインターフェースに近い。
んで、モナドは型クラスの一つでしかない。
等値を司るEq型クラスのインスタンスになれば=が使える。
大小比較を司るOrd型クラスのインスタンスになれば<や<=が使える。
それと同じ。
逐次処理を司るMonad型クラスのインスタンスになれば>>=とreturnが使える。
IOモナドはIO型を受け取るモナドってだけ。
素のモナドを使うのがほぼIO型しかないからIOモナドって一緒くたにされるけど、IOとモナドは分けて考える。
リストやMaybeもモナドのインスタンスなので、モナドでもある。
モナドが他の型クラスと違うのは、メソッド定義(インターフェースになる関数や演算子をインスタンスになる型で定義)の時にモナド則に則って書く必要があるということ。
それとモナド則を正しく定義できたかは型クラスには無関係なので、定義した人が正しさを保証する必要があるということ。
896デフォルトの名無しさん
2017/08/18(金) 09:38:38.34ID:pIYVRSo1 万能で汎用のDSLも作れるけどそれは手続き型言語と同じだから作らないんだよ
IOはごく一部で使われるDSLであるべき
他のところではIOとは別のDSLを使うべきという設計
IOはごく一部で使われるDSLであるべき
他のところではIOとは別のDSLを使うべきという設計
897デフォルトの名無しさん
2017/08/18(金) 13:45:01.90ID:/WLuQhbG Haskellによる手続き型言語の
分かりやすくて面白い実装きぼん
(学習用のおもちゃでよろし)
分かりやすくて面白い実装きぼん
(学習用のおもちゃでよろし)
898デフォルトの名無しさん
2017/08/18(金) 20:36:40.41ID:2JfViLUf899デフォルトの名無しさん
2017/08/18(金) 21:42:29.70ID:XJnMHx6C ListTの使い方ようわかりまへん
do
x <- [1..9]
なんちゃらかんちゃら x
って、リスト感覚で使いたいんですが
do
x <- [1..9]
なんちゃらかんちゃら x
って、リスト感覚で使いたいんですが
900デフォルトの名無しさん
2017/08/19(土) 23:56:10.44ID:3LWi1RRc 直受けの50万 客:いつまでもうちにいていいよ
3次受けの50万(客は70万払ってる) 客:短期延長していい?
5次受けの50万(客は110万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ
長時間労働 高稼働 高スキル要求が多い
零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと
これならJIETから3次でいったほうがいいな
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
3次受けの50万(客は70万払ってる) 客:短期延長していい?
5次受けの50万(客は110万払ってる) 客:作り終わったらとっと出てけ できなかったら即退場だ
長時間労働 高稼働 高スキル要求が多い
零細フリーランスサイトは5次受けから誰もできない難易度の高い仕事 余り物の仕事を紹介してくる。40万円代でやってくれと
これならJIETから3次でいったほうがいいな
446非決定性名無しさん2017/08/02(水) 22:12:48.95
JIETに毎月5千円払えば3次から入場できるだろ?
高額をうたうフリーランスのサイトはだいたい5次から45万円
JIETで閲覧応募できる末端価格からさらに搾取するのが高額をみせつけるフリーランスサイトでした
高額案件をみせつけるフリーランスサイトも案件の取得はJIETでした
473非決定性名無しさん2017/08/03(木) 15:21:30.71
JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているフリーランスのサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子も求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ
それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト
自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む
901デフォルトの名無しさん
2017/08/20(日) 03:21:02.15ID:ZIcYkpAE902デフォルトの名無しさん
2017/08/21(月) 00:38:33.62ID:JGSk0hSy >>901
ListTには失望しました。もう積むのやめます
ListTには失望しました。もう積むのやめます
903デフォルトの名無しさん
2017/08/21(月) 01:01:09.86ID:JGSk0hSy そもそもやろうとしてることに(よくよく考えたら)モナド変換必要なかった
本当に必要だったのは foldl でした
一方ロシアは鉛筆を使った
本当に必要だったのは foldl でした
一方ロシアは鉛筆を使った
904デフォルトの名無しさん
2017/08/24(木) 13:28:03.79ID:CtBOeO2p 以下のhogeを定義してください
foldl' f a xs = foldr1 seq $ hoge $ scanl f a xs
hoge xs = ???
foldl' f a xs = foldr1 seq $ hoge $ scanl f a xs
hoge xs = ???
905デフォルトの名無しさん
2017/08/24(木) 19:41:48.97ID:QM9NdRuY906905
2017/08/24(木) 20:30:17.00ID:QM9NdRuY >>905は事故解決しました
907905
2017/08/24(木) 20:49:44.49ID:QM9NdRuY 引数の適用順序の理解が足りないだけでした
f x = id id id id id id x
というのがあったら
f x = (((((id id) id) id) id) id) x
という感じに左から順番に適用されるんですね
foldr f g [1..9] 707 も (foldr f g [1..9]) 707 と括れば理解できました
f x = id id id id id id x
というのがあったら
f x = (((((id id) id) id) id) id) x
という感じに左から順番に適用されるんですね
foldr f g [1..9] 707 も (foldr f g [1..9]) 707 と括れば理解できました
908デフォルトの名無しさん
2017/08/24(木) 23:08:48.67ID:RV3Vojhw Data.Map.findWithDefault について質問です
マップに存在しなかったからデフォルト値を返したのか、それともマップに存在したからそれを返したのか
一目判らないとき、デバッグでどうやって判定しますか?
マップに存在しなかったからデフォルト値を返したのか、それともマップに存在したからそれを返したのか
一目判らないとき、デバッグでどうやって判定しますか?
909デフォルトの名無しさん
2017/08/24(木) 23:40:45.91ID:Drr24sOi 判定不可能でありそれが意図するところじゃね?
変な値をデフォルトに入れておくか
a->k->Map k a->Either a a的なのを用意するしかないんじゃ
変な値をデフォルトに入れておくか
a->k->Map k a->Either a a的なのを用意するしかないんじゃ
910デフォルトの名無しさん
2017/08/25(金) 00:15:34.79ID:eQ9TUNW0 findWithDefault d k m = maybe (trace "default" d) (trace "existed") $ Map.lookup k m
911デフォルトの名無しさん
2017/08/25(金) 05:39:52.91ID:Qp5pyEwS >>910
やったぜ。ドバァーっとヒット/ミス/更新がその時の検索キーと共に時系列で出てきた。 もう気が狂う程気持ちええんじゃ。
ログまみれのコンソールを見つめてメモ化再帰の効果を確認したりした。ああ〜〜たまらねえぜ。(ありがとうございました)
やったぜ。ドバァーっとヒット/ミス/更新がその時の検索キーと共に時系列で出てきた。 もう気が狂う程気持ちええんじゃ。
ログまみれのコンソールを見つめてメモ化再帰の効果を確認したりした。ああ〜〜たまらねえぜ。(ありがとうございました)
912デフォルトの名無しさん
2017/08/25(金) 06:18:21.22ID:eQ9TUNW0 わろた
913デフォルトの名無しさん
2017/08/26(土) 04:35:19.01ID:gyHjYOL6 >>910
ポイントフリー化に成功しました
findWithDefault = curry.(.uncurry Map.lookup).(`maybe` trace "existed").(trace "default")
https://ideone.com/RVpv4o
ポイントフリー化に成功しました
findWithDefault = curry.(.uncurry Map.lookup).(`maybe` trace "existed").(trace "default")
https://ideone.com/RVpv4o
914デフォルトの名無しさん
2017/08/29(火) 10:59:59.32ID:4lrctZxR 新しい言語を勉強してると「Haskellならこう書けるのになんだかな〜」となってしまう
915デフォルトの名無しさん
2017/08/29(火) 14:36:34.73ID:Qxc6OkmQ Haskell書いてると「OCamlならこう書けるのになんだかな〜」となってしまう
916デフォルトの名無しさん
2017/08/29(火) 14:47:58.47ID:Ca4b6AZL そま?例えば?
917デフォルトの名無しさん
2017/08/29(火) 16:59:34.07ID:weKjOry2 岡村の方が速いらしいっすよ。でも、そうですね…やっぱり僕は、王道を征く、Haskell系ですか
918デフォルトの名無しさん
2017/08/29(火) 19:06:06.26ID:Qxc6OkmQ 多相ヴァリアント
919デフォルトの名無しさん
2017/08/30(水) 16:54:11.68ID:osPI36Tt 双方向リンク系のデータ構造って、Haskell で作るのムズいね。
作るだけなら良いけど、更新時の処理で頭こんがり。
任意のノードに外部からアクセス用リンクが張ってあると
もう訳分からん。
作るだけなら良いけど、更新時の処理で頭こんがり。
任意のノードに外部からアクセス用リンクが張ってあると
もう訳分からん。
920デフォルトの名無しさん
2017/08/30(水) 17:07:44.85ID:YH54NEsT そういうことするなっていう設計の言語で強引にしようとしたらわけわからなくなるよ
921デフォルトの名無しさん
2017/08/30(水) 17:18:14.50ID:osPI36Tt >>920
そういうことするなってのは入門書には書いてないじゃん。
じゃあ、ちょっくらやってみようか、ってなるのがプログラマでしょ。
できるかもしれんし、できんかもしれん。
まぁ、かなりムズいなってのは体験して分かった。
そういうことするなってのは入門書には書いてないじゃん。
じゃあ、ちょっくらやってみようか、ってなるのがプログラマでしょ。
できるかもしれんし、できんかもしれん。
まぁ、かなりムズいなってのは体験して分かった。
922デフォルトの名無しさん
2017/08/30(水) 17:24:15.30ID:YH54NEsT >>921
あー。Haskellでは状態を変更しない為に単方向リストを用いるって書いてなかった?
あー。Haskellでは状態を変更しない為に単方向リストを用いるって書いてなかった?
923デフォルトの名無しさん
2017/08/30(水) 17:35:40.48ID:osPI36Tt >>922
リストの定義とか使い方とかは載ってたけど、
なんで単方向のなのかの説明は無かったよ。
「Haskell:The Craft of Functional Programming」
「Beginning Haskell: A Project-Based Approach」
リストの定義とか使い方とかは載ってたけど、
なんで単方向のなのかの説明は無かったよ。
「Haskell:The Craft of Functional Programming」
「Beginning Haskell: A Project-Based Approach」
924デフォルトの名無しさん
2017/08/30(水) 17:47:54.21ID:YH54NEsT マジかぁ……
925デフォルトの名無しさん
2017/08/31(木) 03:30:11.22ID:lYwDQiZm Purely Functional Data Structuresなら触れられてるかと思って探してみたけど
そもそも双方向連結リスト出てこないな(´・ω・`)
でも永続データ構造の概念を知ればなぜ扱われていないかが分かるだろう多分
そもそも双方向連結リスト出てこないな(´・ω・`)
でも永続データ構造の概念を知ればなぜ扱われていないかが分かるだろう多分
926デフォルトの名無しさん
2017/08/31(木) 05:24:22.47ID:8YNqT7yd 何で双方向リストの必要なんかあるんですか
途中で戻るとか男らしくないっすよ
途中で戻るとか男らしくないっすよ
927デフォルトの名無しさん
2017/08/31(木) 07:18:24.63ID:3UP7YVEo >>926
巨大な双方向グラフを作ることになったんだけど、 使い方は次の通りちょっと特殊。
* あるノードにアクセスしたら、その近隣のノードも集中的にアクセスすることが多い
* ノードが持つ値の読み書きアクセスが圧倒的に多く、グラフの形を変えることは少ない
* ノードの値の書き込みアクセスよりは読み取りアクセスの方が多い
既存の汎用的なグラフ ライブラリと、双方向リンクで自作したグラフ ライブラリとで、
どっちが効率いいか実験してみようと思ったんだ。
でも双方向リンクは、ひとつのノードの値を変えるためにどうしてもグラフ全体を作り直す羽目になる。
どうにかならんものかと考えてたけど、どうにもならんね・・・
巨大な双方向グラフを作ることになったんだけど、 使い方は次の通りちょっと特殊。
* あるノードにアクセスしたら、その近隣のノードも集中的にアクセスすることが多い
* ノードが持つ値の読み書きアクセスが圧倒的に多く、グラフの形を変えることは少ない
* ノードの値の書き込みアクセスよりは読み取りアクセスの方が多い
既存の汎用的なグラフ ライブラリと、双方向リンクで自作したグラフ ライブラリとで、
どっちが効率いいか実験してみようと思ったんだ。
でも双方向リンクは、ひとつのノードの値を変えるためにどうしてもグラフ全体を作り直す羽目になる。
どうにかならんものかと考えてたけど、どうにもならんね・・・
928デフォルトの名無しさん
2017/08/31(木) 09:37:24.20ID:z8GPJM/w 「doubly linked list haskell」でググって適当な実装拾う
929デフォルトの名無しさん
2017/08/31(木) 11:49:25.22ID:lYwDQiZm すごハスにあるようなZipper構造かな必要なのは
930デフォルトの名無しさん
2017/08/31(木) 12:38:50.35ID:cadjyHiv 書き換えしないんだったら ([a], a, [a]) みたいなので充分なんだよな
コモナドにしてどうたらとか余計な話も無視して
コモナドにしてどうたらとか余計な話も無視して
931デフォルトの名無しさん
2017/08/31(木) 12:49:49.13ID:3UP7YVEo あの、欲しいのはリストじゃなくてグラフなんだ。
だから、zipper 系とは違う。
だから、zipper 系とは違う。
932デフォルトの名無しさん
2017/08/31(木) 14:03:01.85ID:UJfUdOL2 最低限木じゃないと効率的かつ単純なのは無理なんじゃないかな?
あんま自信ないけど
あんま自信ないけど
933デフォルトの名無しさん
2017/08/31(木) 14:05:39.83ID:3UP7YVEo 皆のレスがどうも勘違いしてると思ってたら、
俺が最初に双方向リンクと言ってしまったからか。
ごめん、相互リンクだ。
俺が最初に双方向リンクと言ってしまったからか。
ごめん、相互リンクだ。
934デフォルトの名無しさん
2017/08/31(木) 14:16:21.20ID:3UP7YVEo >>932
木構造でも、親ノードへのリンクを入れると相互リンクになって難しくなるよね。
ひとつのノードの値を変えるためには、
ツリー全体を作り直すことになるんじゃないかな。
HaskellのDOMツリーのデータ構造とかどうなってるんだろ・・・
木構造でも、親ノードへのリンクを入れると相互リンクになって難しくなるよね。
ひとつのノードの値を変えるためには、
ツリー全体を作り直すことになるんじゃないかな。
HaskellのDOMツリーのデータ構造とかどうなってるんだろ・・・
935デフォルトの名無しさん
2017/08/31(木) 14:36:16.80ID:3UP7YVEo よく考えたら、リストとかツリーでも、
途中のノードの値を変えたかったら、
そのノードまでリンクで繋がってる全ノードは、
新しくリンクを張り直さなくちゃいけないんだね。
途中のノードの値を変えたかったら、
そのノードまでリンクで繋がってる全ノードは、
新しくリンクを張り直さなくちゃいけないんだね。
936デフォルトの名無しさん
2017/08/31(木) 16:07:16.49ID:ByIgTrbm そうです。途中の値の変更は
リストならO(n)
ツリーならO(log n)
リストならO(n)
ツリーならO(log n)
937デフォルトの名無しさん
2017/08/31(木) 17:20:58.63ID:UJfUdOL2938デフォルトの名無しさん
2017/09/01(金) 01:21:03.60ID:5J9AnuIe 何が何でも1つのプログラミング言語で何とかしようとするのって
異国に行っても母国語で通そうとする観光客と同じ
異国に行っても母国語で通そうとする観光客と同じ
939デフォルトの名無しさん
2017/09/01(金) 06:41:46.01ID:YbmVmXZP940デフォルトの名無しさん
2017/09/02(土) 01:43:24.06ID:6rFZUKZZ >何が何でも1つのプログラミング言語で何とかしようとするのって
>異国に行っても母国語で通そうとする観光客と同じ
こういうやつにかぎってポリグロッタルコストを甘く見てる
>異国に行っても母国語で通そうとする観光客と同じ
こういうやつにかぎってポリグロッタルコストを甘く見てる
941デフォルトの名無しさん
2017/09/02(土) 02:26:59.07ID:zv/5K5Jn 私はHaskell以外のプログラミング言語で書く気はありません
942デフォルトの名無しさん
2017/09/02(土) 03:52:13.44ID:qGW8qyv/ 慣れるまで大変だけど、慣れたら居心地いい気がする
943デフォルトの名無しさん
2017/09/02(土) 07:28:06.22ID:pdF7ruXY 困ったらFFIでC呼び出せばいいだけだから助かる
944デフォルトの名無しさん
2017/09/08(金) 23:35:36.55ID:r8Qtf4kd ICFP 2017 で発表された資料、成果や知見はどこかで後悔されたりしないんですか?
動画が公開されてるんなら、有料でも見たいです。
動画が公開されてるんなら、有料でも見たいです。
945デフォルトの名無しさん
2017/09/09(土) 18:15:24.47ID:lkyt770O 発表者各自が公開してるの地道に探すしかねーんでないの
ICFP Conference(@icfp_conference)さん | Twitter
https://twitter.com/icfp_conference
ICFP Conference(@icfp_conference)さん | Twitter
https://twitter.com/icfp_conference
946デフォルトの名無しさん
2017/09/09(土) 20:11:43.28ID:TPWLKlk7 >>945
やはりそうですか。
毎年そうやって発表者や参加者の発信を探すのですが、
分散しており、詳しいことは書いてないことも多く、
情報集めに苦労する割には、たいてい徒労に終わります。
有料でいいので公式がまとめて公開してくれるといいのにと
ここ数年つたない英語でメールを出しているのですが、
相手にしてもらえませんね。
すいません、愚痴でした。
やはりそうですか。
毎年そうやって発表者や参加者の発信を探すのですが、
分散しており、詳しいことは書いてないことも多く、
情報集めに苦労する割には、たいてい徒労に終わります。
有料でいいので公式がまとめて公開してくれるといいのにと
ここ数年つたない英語でメールを出しているのですが、
相手にしてもらえませんね。
すいません、愚痴でした。
947デフォルトの名無しさん
2017/09/09(土) 23:36:02.27ID:9IxpzJRD icfpが何なのか知らないけど「icfp video」「icfp paper」で検索してみた
ICFP Video - YouTube
https://www.youtube.com/channel/UCwRL68qZFfub1Ep1EScfmBw
gasche - GitHub
https://github.com/gasche
ICFP 2016- Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming
http://www.sigplan.org/OpenTOC/icfp16.html
フェイスブック、レディっと、ラムダザウルチメイトなどの良く知られた媒体でも
事前告知や事後報告があると思う
ICFP Video - YouTube
https://www.youtube.com/channel/UCwRL68qZFfub1Ep1EScfmBw
gasche - GitHub
https://github.com/gasche
ICFP 2016- Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming
http://www.sigplan.org/OpenTOC/icfp16.html
フェイスブック、レディっと、ラムダザウルチメイトなどの良く知られた媒体でも
事前告知や事後報告があると思う
948デフォルトの名無しさん
2017/09/10(日) 00:33:58.75ID:et8drD+r >>947
指摘を受けて、もしかしてと思い、改めて公式サイトの中を探してみましたら、
paper は公開されていることが分かりました。
過去のも見てみましたら、去年のもの paper にはアクセスできるようでした。
(その前のは公式からはリンクは張られていない模様)
video も年によってはリンクが張られていたりします。
なかなかぱっと見では分かりにくいところにリンクがあるのですが、
やはり探し方が悪かったみたいでお恥ずかしいです。
ちなみに、ICFP は国際的な関数型言語の会議です。
使う側、処理系側双方の最新情報を発表したり、
ワークショップが開かれていたりします。
指摘を受けて、もしかしてと思い、改めて公式サイトの中を探してみましたら、
paper は公開されていることが分かりました。
過去のも見てみましたら、去年のもの paper にはアクセスできるようでした。
(その前のは公式からはリンクは張られていない模様)
video も年によってはリンクが張られていたりします。
なかなかぱっと見では分かりにくいところにリンクがあるのですが、
やはり探し方が悪かったみたいでお恥ずかしいです。
ちなみに、ICFP は国際的な関数型言語の会議です。
使う側、処理系側双方の最新情報を発表したり、
ワークショップが開かれていたりします。
949デフォルトの名無しさん
2017/09/11(月) 00:32:10.78ID:Xe2WUSa/ 問題解決もしくは近づいたのなら何よりです
950デフォルトの名無しさん
2017/09/11(月) 23:17:06.08ID:NiRp1zJ5 Haskellの正規表現ってどのライブラリを使うのが無難?
Text.Regex.Posixをimportしようとすると、Text.Regex.BaseかText.Regex.PCREの間違いじゃね?って言われて困惑
Text.Regex.Posixをimportしようとすると、Text.Regex.BaseかText.Regex.PCREの間違いじゃね?って言われて困惑
951デフォルトの名無しさん
2017/09/13(水) 18:15:30.36ID:15e8c4wP (´・ω・`)あのー
なにかおすすめの参考書ありませんか?
初心者です
むちゃくちゃ簡単でやさしく書いてるのが良いです
アマゾンで見つけて最近出たみたいなんだけどこれはどうなの?
Haskellによる関数プログラミングの思考法 https://www.amazon.co.jp/dp/4048930532/ref=cm_sw_r_cp_api_ozpUzbZS57HY2
なにかおすすめの参考書ありませんか?
初心者です
むちゃくちゃ簡単でやさしく書いてるのが良いです
アマゾンで見つけて最近出たみたいなんだけどこれはどうなの?
Haskellによる関数プログラミングの思考法 https://www.amazon.co.jp/dp/4048930532/ref=cm_sw_r_cp_api_ozpUzbZS57HY2
952デフォルトの名無しさん
2017/09/13(水) 19:15:57.75ID:jV0bEQ9+ 正直Haskellで「簡単でやさしく」は無理です
諦めてすごいH本やHaskellWikI,Hoogleや各種書籍、サイトを何度も往復して苦しみながら覚えてください
諦めてすごいH本やHaskellWikI,Hoogleや各種書籍、サイトを何度も往復して苦しみながら覚えてください
953デフォルトの名無しさん
2017/09/13(水) 19:18:52.25ID:15e8c4wP (´・ω・`)はい
954デフォルトの名無しさん
2017/09/13(水) 19:53:59.78ID:4h5PMlCQ すごいHaskell楽しくなんとかって奴がいいらしいよ
あとリアルワールドHaskell
あとリアルワールドHaskell
955デフォルトの名無しさん
2017/09/14(木) 00:00:37.91ID:55xYcYks https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%BC%E3%83%89%E3%82%A6%E3%82%A7%E3%82%A2%E8%A8%98%E8%BF%B0%E8%A8%80%E8%AA%9E
HaskellベースのHDLってけっこう 多いのな
ビックリした
HaskellベースのHDLってけっこう 多いのな
ビックリした
956デフォルトの名無しさん
2017/09/14(木) 01:28:21.76ID:kgKbKDJJ >>951
他の人も書いてるけどやはり「すごいHaskell」がとっつきやすさは高いと思う
それでいて内容もちゃんとしている
「関数プログラミングの思考法」もいい本だとは思うのだが
目的がアルゴリズムデザインとかの方面であんまり初心者向けっぽくない
他の人も書いてるけどやはり「すごいHaskell」がとっつきやすさは高いと思う
それでいて内容もちゃんとしている
「関数プログラミングの思考法」もいい本だとは思うのだが
目的がアルゴリズムデザインとかの方面であんまり初心者向けっぽくない
958デフォルトの名無しさん
2017/09/14(木) 09:24:06.36ID:ux4IsQoU 英語が読めればwikibooksのやつもどうですか?
自分は"プログラミングHaskell"から入ったので初見じゃないですが、良さげに見えます。
内容も定期的に更新かかってますし。
自分は"プログラミングHaskell"から入ったので初見じゃないですが、良さげに見えます。
内容も定期的に更新かかってますし。
959デフォルトの名無しさん
2017/09/14(木) 10:02:22.29ID:Yrr+4vGX 「しゅごいHaskell」はダブルVサイン出しながら
読まなきゃいかんのでキーボードが打てない
読まなきゃいかんのでキーボードが打てない
960デフォルトの名無しさん
2017/09/14(木) 16:15:03.19ID:fLwKChPf What does it mean?
961デフォルトの名無しさん
2017/09/14(木) 23:15:23.23ID:BKIQZ2N0 He probably meant Haskell wikibook page is upto dated. And that is also why I recommend it for beginners too.
962デフォルトの名無しさん
2017/09/15(金) 08:29:13.24ID:K8WAqD4o >>957
あなたがそもそも関数型プログラミングに慣れ親しんでいないのであれば、まずはそこが第一の壁となるでしょう
まずはリストをメインに再帰やマッピング、畳み込みといった操作に慣れましょう
またHaskellはデフォルトでカリー化されているのでその妙味も十分に味わいましょう
次に壁となるのは、型や型クラスでしょうか?
ここではクラスやインスタンスといった単語が出てきますが、それらはいわゆるオブジェクト指向で使われているものとは意味が全く違うので注意してください
型に慣れ親しみ、常に適切な型を選択できるよう意識してください
そうすればコンパイラがあなたの強い味方となってくれます
最後に入門者の壁となるのは、おそらくモナドでしょう
モナドは数学の圏論由来の概念ですが、別段圏論に詳しくある必要はありません
基本的な部分では、モナドは単なる文脈であり、文脈を表すためのコンテナです
しかし、それ以上に高度で抽象的なことをやろうとすると、その理解では行き詰まるかもしれません
そんなときは、圏論に軽く触れてみるのもいいでしょう
少なくともかの有名な
「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」
をざっくりとでもいいので理解できれば、新たな視界が開けると思います
Haskellは簡単な言語でもやさしい言語でもありませんが、その代わり高度に抽象化された、バグの少ないプログラミングが可能です
あなたの成功を心より祈っています
あなたがそもそも関数型プログラミングに慣れ親しんでいないのであれば、まずはそこが第一の壁となるでしょう
まずはリストをメインに再帰やマッピング、畳み込みといった操作に慣れましょう
またHaskellはデフォルトでカリー化されているのでその妙味も十分に味わいましょう
次に壁となるのは、型や型クラスでしょうか?
ここではクラスやインスタンスといった単語が出てきますが、それらはいわゆるオブジェクト指向で使われているものとは意味が全く違うので注意してください
型に慣れ親しみ、常に適切な型を選択できるよう意識してください
そうすればコンパイラがあなたの強い味方となってくれます
最後に入門者の壁となるのは、おそらくモナドでしょう
モナドは数学の圏論由来の概念ですが、別段圏論に詳しくある必要はありません
基本的な部分では、モナドは単なる文脈であり、文脈を表すためのコンテナです
しかし、それ以上に高度で抽象的なことをやろうとすると、その理解では行き詰まるかもしれません
そんなときは、圏論に軽く触れてみるのもいいでしょう
少なくともかの有名な
「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」
をざっくりとでもいいので理解できれば、新たな視界が開けると思います
Haskellは簡単な言語でもやさしい言語でもありませんが、その代わり高度に抽象化された、バグの少ないプログラミングが可能です
あなたの成功を心より祈っています
963デフォルトの名無しさん
2017/09/15(金) 08:57:14.76ID:8dqnOzco 歳を取って反射神経鈍ってくると一々詳細を語るのが億劫になって抽象的なまま話を進めたくなるよね
Haskellは抽象的にプログラミングするインフラを整備している?
Haskellは抽象的にプログラミングするインフラを整備している?
964デフォルトの名無しさん
2017/09/15(金) 18:00:40.28ID:d/L5NKte Map a (Map b c)
Map (a,b) c
どっちが速いかみんな一度は悩んだことあると思う
Map (a,b) c
どっちが速いかみんな一度は悩んだことあると思う
965デフォルトの名無しさん
2017/09/15(金) 22:35:43.14ID:znUIhbu+ 悩まんでしょ
966デフォルトの名無しさん
2017/09/15(金) 22:47:16.31ID:eUG8Jdoq コンパイルしたらどうせ一緒になると思って適当に書いてたけど、変わるの?
967デフォルトの名無しさん
2017/09/15(金) 23:09:08.09ID:4fuQ9N5K Mapは平衡二分探索木だから各Map b cのサイズに開きがあると遅くなるね
968デフォルトの名無しさん
2017/09/16(土) 13:16:45.55ID:u+a6R9+A newtype F a b c = F (Map a (Map b c))
newtype G a b c = G (Map (a, b) c)
これでFとGはどうせ一緒のクラスになる
こういうポリモーフィズムの意味がわかってる人は速さで悩まない
newtype G a b c = G (Map (a, b) c)
これでFとGはどうせ一緒のクラスになる
こういうポリモーフィズムの意味がわかってる人は速さで悩まない
969デフォルトの名無しさん
2017/09/16(土) 15:43:07.25ID:QR311jcD それは実装を隠蔽しただけで速さの悩みを解決したわけではないのでは…
もちろん実装を隠蔽しておいて後でより速い実装に
容易に交換できるようにしておくのは大変有用だが
もちろん実装を隠蔽しておいて後でより速い実装に
容易に交換できるようにしておくのは大変有用だが
970デフォルトの名無しさん
2017/09/16(土) 20:52:50.94ID:u+a6R9+A pi :: Floating a => a
円周率piの値を隠蔽し精度の悩みを解決
円周率piの値を隠蔽し精度の悩みを解決
971デフォルトの名無しさん
2017/09/16(土) 21:24:55.55ID:MfZyyhcD 今更だけど、いつの間にか cabal のバージョンが 1 から 2 になってる
なんか大きく変わったの?
なんか大きく変わったの?
972デフォルトの名無しさん
2017/09/17(日) 08:09:36.24ID:QPoZRnuU973デフォルトの名無しさん
2017/09/21(木) 22:09:47.22ID:1QLcw3LX haskellコンパイラはユーザ定義のモナドが
モナド則満たすことを
チェックしてくれない所がウンコ
モナド則満たすことを
チェックしてくれない所がウンコ
974デフォルトの名無しさん
2017/09/21(木) 23:00:55.55ID:gD1zcn0E そんな超能力コンパイラがあるですか?
975デフォルトの名無しさん
2017/09/21(木) 23:55:50.59ID:Y0fSMmUh QuickCheck的なのがコンパイル時に走ってチェックしてくれたりするように
そのうちならないかなー
そのうちならないかなー
976デフォルトの名無しさん
2017/09/21(木) 23:58:25.67ID:h/TDh704 モナドを自作したことがないから後学のためにどういう状況でどういうモナドを自作すると効率的なのか教えていただけると幸いです
977デフォルトの名無しさん
2017/09/22(金) 00:28:53.04ID:kX95feab 適当に型を作ってたら実はモナドだった、みたいな
978デフォルトの名無しさん
2017/09/22(金) 16:55:50.20ID:xffnPG6j 原理的にモナド則のチェックの自動化は不可能なの?
圏論マスターでも無理なの?
圏論マスターでも無理なの?
979デフォルトの名無しさん
2017/09/22(金) 17:04:50.24ID:uYwUnAnO ゲーデルさんに聞けばわかるかも。
980デフォルトの名無しさん
2017/09/22(金) 17:56:16.78ID:4/60bB6Q ユーザが書いたモナドであることの形式的証明を
検証出来る処理系なら有るはず。
Coq辺り。
検証出来る処理系なら有るはず。
Coq辺り。
981デフォルトの名無しさん
2017/09/22(金) 19:52:40.81ID:uE400tii Vectorパッケージで、基本Unboxedにして、
Unboxedに出来なければBoxedにする、
途中でUnboxedにできるなら戻す、
でのを手でやってるのですが、スマートなやり方ってありますか?
Unboxedに出来なければBoxedにする、
途中でUnboxedにできるなら戻す、
でのを手でやってるのですが、スマートなやり方ってありますか?
982デフォルトの名無しさん
2017/09/23(土) 02:53:52.53ID:7lhkarx+ QuickSpecならなんとかしてくれる
かもしれない
かもしれない
983デフォルトの名無しさん
2017/09/23(土) 20:42:11.20ID:WVPJPMdD stack プロジェクト内の cabal ファイルの build-depends の項に sdl2 を書き込んで、stack build コマンドを実行しました。
すると、sdl2 パッケージのビルドでエラーが出て、「-fPCI を付けて再コンパイルしてください」と出力されました。
そこで stack build --ghc-options="-fPIC" コマンドを実行してみました。
しかし、それでも同様のエラーが起き、ビルドできません。
stack による sdl2 パッケージを利用するプログラムをビルドするにはどうすれば良いでしょうか。
すると、sdl2 パッケージのビルドでエラーが出て、「-fPCI を付けて再コンパイルしてください」と出力されました。
そこで stack build --ghc-options="-fPIC" コマンドを実行してみました。
しかし、それでも同様のエラーが起き、ビルドできません。
stack による sdl2 パッケージを利用するプログラムをビルドするにはどうすれば良いでしょうか。
984デフォルトの名無しさん
2017/09/23(土) 21:51:07.20ID:58d35SiT >>983
stack.yaml に、
ghc-options:
sdl2: -fPIC
を追記すればOK。たぶん。
https://github.com/commercialhaskell/stack/blob/master/doc/yaml_configuration.md#ghc-options
stack.yaml に、
ghc-options:
sdl2: -fPIC
を追記すればOK。たぶん。
https://github.com/commercialhaskell/stack/blob/master/doc/yaml_configuration.md#ghc-options
985デフォルトの名無しさん
2017/09/23(土) 22:50:55.76ID:WVPJPMdD >>984
やってみましたが、結果は変わりませんでした。
今使っている lts-9.5 の snapshot が
~/.stack/snapshot/x86_64-linux-tinfo6-nopie/lts-9.5
にあるのですが、nopie とあり、何か問題に関係ありそうなのですが、どうでしょうか。
やってみましたが、結果は変わりませんでした。
今使っている lts-9.5 の snapshot が
~/.stack/snapshot/x86_64-linux-tinfo6-nopie/lts-9.5
にあるのですが、nopie とあり、何か問題に関係ありそうなのですが、どうでしょうか。
986デフォルトの名無しさん
2017/09/23(土) 23:32:36.23ID:58d35SiT >>985
うーん、なんだかよくわからないけど、リンクフェーズで”recompile with -fPIC”と言われてしまう問題が報告されていて
https://github.com/commercialhaskell/stack/issues/2712
https://docs.haskellstack.org/en/stable/faq/#i-get-strange-ld-errors-about-recompiling-with-fpic
これによると、Arch Linux では ncurses5-compat-libs をインストールすると直るらしい。
うーん、なんだかよくわからないけど、リンクフェーズで”recompile with -fPIC”と言われてしまう問題が報告されていて
https://github.com/commercialhaskell/stack/issues/2712
https://docs.haskellstack.org/en/stable/faq/#i-get-strange-ld-errors-about-recompiling-with-fpic
これによると、Arch Linux では ncurses5-compat-libs をインストールすると直るらしい。
987デフォルトの名無しさん
2017/09/24(日) 10:57:49.47ID:G5x2bhDn >>986
とりあえず先に進めるようになりました。
アドバイスありがとうございました。
たしかに私は ArchLinux を使っています。
Haskell の問題にディストリビューションの違いが絡んでくるとは考えていませんでした。
はじめ ncurses5-compat-libs をインストールしただけでは解決されませんでした。
(ログインし直しても)
そこで stack を一度綺麗にアンインストールしてから再インストールし、
それでもダメで、更にビルド時に -fPIC オプションを付けたらエラー無く通りました。
何が原因で処置がどう働いてこういう結果になったのか、まだ何となくでしか分かりませんが、
とにかく SDL を用いたプログラムを試すことができるようになり良かったです。
とりあえず先に進めるようになりました。
アドバイスありがとうございました。
たしかに私は ArchLinux を使っています。
Haskell の問題にディストリビューションの違いが絡んでくるとは考えていませんでした。
はじめ ncurses5-compat-libs をインストールしただけでは解決されませんでした。
(ログインし直しても)
そこで stack を一度綺麗にアンインストールしてから再インストールし、
それでもダメで、更にビルド時に -fPIC オプションを付けたらエラー無く通りました。
何が原因で処置がどう働いてこういう結果になったのか、まだ何となくでしか分かりませんが、
とにかく SDL を用いたプログラムを試すことができるようになり良かったです。
988デフォルトの名無しさん
2017/09/25(月) 22:51:00.48ID:xypOJPnn 集合Aと整数mを引数に取り、Aの可能なm分割全体から成る集合Mを返す関数を作りたいです。
(m分割とは集合論的にm個の集合に分割することとする)
例:
集合 A = {a, b, c, d} と m=2 を引数に取ると、下記の集合Mを返す。
M = {{{a}, {b,c,d}}, {{b}, {a,c,d}}, {{c}, {a,b,d}}, {{d}, {a,b,c}}
, {{a,b}, {c,d}}, {{a,c}, {b,d}}, {{a,d}, {b,c}} }
集合を表す型は何でも良いです。
Data.List でも Data.Set でも、その他の型でも。
Haskell で効率よく書けるでしょうか。
ここでいう効率とは、空間よりも時間を優先します。
空間も小さければ尚良いですし、ソースが綺麗ならいっそう良いです。
かれこれ一週間ほど考えていますが (と言っても四六時中ではありませんが)、
なかなか良いアイデアが浮かびません。
前もって言っておきますが、実際の集合Aのサイズはせいぜい20程度で、分割数も2に固定です。
質問のきっかけとなった問題は愚直に実装して解決しました。
なので、この質問は純粋に頭の体操、ゲームです。
(m分割とは集合論的にm個の集合に分割することとする)
例:
集合 A = {a, b, c, d} と m=2 を引数に取ると、下記の集合Mを返す。
M = {{{a}, {b,c,d}}, {{b}, {a,c,d}}, {{c}, {a,b,d}}, {{d}, {a,b,c}}
, {{a,b}, {c,d}}, {{a,c}, {b,d}}, {{a,d}, {b,c}} }
集合を表す型は何でも良いです。
Data.List でも Data.Set でも、その他の型でも。
Haskell で効率よく書けるでしょうか。
ここでいう効率とは、空間よりも時間を優先します。
空間も小さければ尚良いですし、ソースが綺麗ならいっそう良いです。
かれこれ一週間ほど考えていますが (と言っても四六時中ではありませんが)、
なかなか良いアイデアが浮かびません。
前もって言っておきますが、実際の集合Aのサイズはせいぜい20程度で、分割数も2に固定です。
質問のきっかけとなった問題は愚直に実装して解決しました。
なので、この質問は純粋に頭の体操、ゲームです。
989デフォルトの名無しさん
2017/09/26(火) 00:11:58.02ID:lGqC8DP/ 集合の任意の要素m個(nCm)に1〜mの番号を重複なく振る(順列m!)、残りの要素に1〜mの番号を適当に振る(m^(n-m))
レス数が950を超えています。1000を超えると書き込みができなくなります。
ニュース
- アメリカ議会 「中国が台湾武力侵攻する準備を急速進展中」 ★2 [お断り★]
- 【高市自民】中国軍SNS 高市首相に怖すぎる地獄絵で警告、火の海の靖国神社「自ら墓穴を掘り、戻れない道へ進む」 [夜のけいちゃん★]
- 【速報】公然わいせつの疑いで逮捕・送検・略式起訴のAぇ! group 草間リチャード敬太メンバー 脱退を発表 「心の病の療養」に専念 [Ailuropoda melanoleuca★]
- 「ドラゴンボール」初の全世界キャラクター人気投票が開幕!212キャラからナンバーワンが決まる!! [ひかり★]
- 小野田紀美 経済安保相「悪いことをする外国人、日本にいない状況つくる」 [Hitzeschleier★]
- 「二枚舌は許されない」中国外務省 高市総理の発言を批判… ★2 [BFU★]
- 【高市早苗】やせ我慢型の節約が大流行😫😠😤 [583597859]
- 【実況】博衣こよりのえちえちお子様ランチ🛸💜🥀🧪🍃★2
- 【男磨き】ハウスルール汁遊び禁止🈲🏡【ジョージメンズコーチ】
- 奈良高専「ぼくらは、ほんとに負けたんでしょうか…」ロボコンで旭川1up周回作戦に敗北、涙ながらに語る。奈良OBからも疑問の声 [776365898]
- 【悲報】イチゴ高騰で、ショートケーキからイチゴが消える🍰 [966095474]
- 【画像】沖縄旅行ぼく、とんでもなく綺麗なビーチに来てしまうWWWWWWWWWWW [732289945]
