- 1 名前:デフォルトの名無しさん mailto:sage [2017/01/15(日) 23:43:54.28 ID:Vh4eztBk.net]
- 関数型プログラミング言語 Haskell について語るスレです。
haskell.org (公式サイト) www.haskell.org/ 前スレ 関数型プログラミング言語Haskell Part28 echo.2ch.net/test/read.cgi/tech/1428597032/
- 883 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 18:03:28.37 ID:HwAT4qGf.net]
- 春先Haskell熱心にやってたが
いまはCとかアセンブラとかそんなんばっかw
- 884 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 18:05:00.48 ID:HwAT4qGf.net]
- 圏論分からんのがここで
いくら吠えても無駄だとという…
- 885 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 20:12:02.36 ID:IonSoW2j.net]
- 「左辺 <- 右辺」の右辺をモナドという
左辺と右辺が等しいとは言っていないので制約が少なくて便利
- 886 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 20:17:22.67 ID:lpoYOEZY.net]
- 圏論を学ぶ為の知識がない
- 887 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 20:37:31.10 ID:IonSoW2j.net]
- letとwhereが炎上したのも
等しいと書いてあるのに時間とメモリの消費が違うのはおかしいって話だよな
- 888 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 20:53:52.30 ID:FlMJ7oBL.net]
- 圏論もモノイドもわからなくてもHaskellでコード書くくらいは出来るけどな
もっと初学者への門戸を広げないと未来がない気がする
- 889 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 22:55:23.88 ID:CgEdc2Wx.net]
- >>867
最適化オプションで差がほぼ無くなるんだから、 俺は、どっちの書き方でも良い ==> 読みやすい方で書けばOK となって嬉しいけどな。 GUI ライブラリの主流は知らんけど、ポテンシャル高いのは Web アプリ系だと思ってる。 Webブラウザを GUI のキャンバスにするタイプのライブラリ。 基本的にはどのプラットフォームでも同じように動く。 既存の Web アプリ用テストフレームワークが使える。 この辺り、ライブラリ開発者にもアプリ開発者にも大きなメリットで、 要するに開発がしやすい。 これからどんどん進化していく可能性が高いんじゃないかな。 そんなライブラリはいくつかあるけど、俺は threepenny-gui がおすすめ。 ヘンに小難しい EDSL が無く、概念が素直でシンプルだからプログラムしやすいよ。 stackage にも入ってるから導入が楽だしね。
- 890 名前:デフォルトの名無しさん mailto:sage [2017/08/14(月) 23:10:56.01 ID:/MmIRMIQ.net]
- >>879
情報ありがとう。 良い機会だしThree pennyやってみるよ。 上ででてるFRPとかいうのもやれそうで面白そうだし。
- 891 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 02:45:23.70 ID:NWVlMToc.net]
- >>842
2014年とかめっちゃ情報古いのでアテにならんだろ Revision history of "Let vs. Where" - HaskellWiki https://wiki.haskell.org/index.php?title=Let_vs._Where&action=history
- 892 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 16:18:56.38 ID:5CT1InAk.net]
- Chris Okasakiの純粋関数型データ構造
Haskellを志すキッズはマストバイだわ まだ3章だけど、木の値の更新でどうやって効率良く(更新しない部分を)扱ってるのか解ったわ 根元から辿って、毎回関係ない方を共有してけば確かに辿るステップ分のコピーしか発生しないわけだわ 対数オーダーになるわけだわ なるほどなるほど SML記法で書いてあるけどHaskell式としてもすぐに頭に入るわ
- 893 名前:デフォルトの名無しさん mailto:sage [2017/08/15(火) 17:50:51.72 ID:ukf6/i16.net]
- ステマステマス
- 894 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 10:19:38.26 ID:WjjZTNlo.net]
- smlnj入れたけど全然勉強進んでないなそういえば
- 895 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 15:19:53.05 ID:CVOJ5+kj.net]
- ニュージャージーSMLは大学時代情報科学実験だか演習だかの簡易コンパイラ作製でひどい目にあった
Haskellに出逢えなかったら危うく関数型アレルギーになるところだった
- 896 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 17:48:37.53 ID:i974/+KY.net]
- stackで、stack buildしても上書きされなかったりします?
stack execしても、新しいのにならない、、
- 897 名前:デフォルトの名無しさん [2017/08/16(水) 20:37:22.91 ID:DL/Olpzx.net]
- >>885
どんなとこが合わなかったの?
- 898 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 23:08:21.23 ID:CVOJ5+kj.net]
- ・怒涛の再帰再帰再帰再帰の思考枠組みに悲鳴を上げる、手続き脳だった当時のボクの頭が
・末尾再帰最適化など実際(パフォーマンス)的なことを教えてくれず、代入なし、変更はコピーでやるとふわふわっと説明され、 (時間・空間)計算量的に現実には使い物にならないんじゃないかという疑念を払拭してくれなかった当時の講師(ボクはC++のように本格的でないものにはやる気が出ない性格)が ・演習に遅刻した奴への嫌がらせかと疑わしい程に沢山埋め込んであるレジュメの誤植を、口頭でちょろちょろっと訂正するだけのおざなり風土(レジュメだけでなくちゃんと教科書で進めろ)が ・できあがる、四則演算しかできない(途中アセンブリ言語に少し触れたのは良かったが)面白くもなんともない(ボクは本格的でないものにはやる気が出ない性格)糞仕様の言語(とそれ用コンパイラ)が …ん? なんかほとんどニュージャージーのせいじゃないな
- 899 名前:デフォルトの名無しさん mailto:sage [2017/08/16(水) 23:58:51.50 ID:t3qJKwuj.net]
- そういうの、よそのスレでやってくれないか
- 900 名前:デフォルトの名無しさん mailto:sage [2017/08/17(木) 07:36:41.55 ID:+LfjPFPQ.net]
- すいません許してください。何でもしますから
- 901 名前:デフォルトの名無しさん [2017/08/18(金) 00:54:02.54 ID:/Ug8Ilbd.net]
- モナドってインタフェースみたいなもんでいいのか?
つまりなんでもアリにしちゃうと、設計上様々な不整合があるから 「こういうモナド」を最初に規定してしまい、「モナドに合致しない」記述は コンパイルで弾いてくれるの?
- 902 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 01:40:52.19 ID:DcI2Tm3Y.net]
- モナドはDSLプラットフォーム
- 903 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 08:52:35.38 ID:JMfuFDdS.net]
- 文脈だって言ってんダロ
文脈を保ちながら普通の値と同じように扱うための規則を定めたものがモナド
- 904 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 09:06:56.52 ID:t41bY7Zb.net]
- haskellはモナドじゃないものもコンパイル通しちゃうよ
モナドであることの保証は自分でするしか
- 905 名前:デフォルトの名無しさん [2017/08/18(金) 09:22:11.27 ID:xzRfloCT.net]
- >>891
モナドってより型クラスがインターフェースに近い。 んで、モナドは型クラスの一つでしかない。 等値を司るEq型クラスのインスタンスになれば=が使える。 大小比較を司るOrd型クラスのインスタンスになれば<や<=が使える。 それと同じ。 逐次処理を司るMonad型クラスのインスタンスになれば>>=とreturnが使える。 IOモナドはIO型を受け取るモナドってだけ。 素のモナドを使うのがほぼIO型しかないからIOモナドって一緒くたにされるけど、IOとモナドは分けて考える。 リストやMaybeもモナドのインスタンスなので、モナドでもある。 モナドが他の型クラスと違うのは、メソッド定義(インターフェースになる関数や演算子をインスタンスになる型で定義)の時にモナド則に則って書く必要があるということ。 それとモナド則を正しく定義できたかは型クラスには無関係なので、定義した人が正しさを保証する必要があるということ。
- 906 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 09:38:38.34 ID:pIYVRSo1.net]
- 万能で汎用のDSLも作れるけどそれは手続き型言語と同じだから作らないんだよ
IOはごく一部で使われるDSLであるべき 他のところではIOとは別のDSLを使うべきという設計
- 907 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 13:45:01.90 ID:/WLuQhbG.net]
- Haskellによる手続き型言語の
分かりやすくて面白い実装きぼん (学習用のおもちゃでよろし)
- 908 名前:デフォルトの名無しさん [2017/08/18(金) 20:36:40.41 ID:2JfViLUf.net]
- >>891
ぶっちゃけていうとライブラリ実装者専用の グローバル変数置き場って感じじゃね? ライブラリのユーザはその中身は気にせずに使う。
- 909 名前:デフォルトの名無しさん mailto:sage [2017/08/18(金) 21:42:29.70 ID:XJnMHx6C.net]
- ListTの使い方ようわかりまへん
do x <- [1..9] なんちゃらかんちゃら x って、リスト感覚で使いたいんですが
- 910 名前:デフォルトの名無しさん mailto:sage [2017/08/19(土) 23:56:10.44 ID:3LWi1RRc.net]
- 直受けの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万台にならなくて済む
- 911 名前:デフォルトの名無しさん mailto:sage [2017/08/20(日) 03:21:02.15 ID:ZIcYkpAE.net]
- >>899
x <- ListT $ return [1..9] でもListTはモナドの結合則を破るというか 場合によっては幅優先になるから不用意に使わない方がいい
- 912 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 00:38:33.62 ID:JGSk0hSy.net]
- >>901
ListTには失望しました。もう積むのやめます
- 913 名前:デフォルトの名無しさん mailto:sage [2017/08/21(月) 01:01:09.86 ID:JGSk0hSy.net]
- そもそもやろうとしてることに(よくよく考えたら)モナド変換必要なかった
本当に必要だったのは foldl でした 一方ロシアは鉛筆を使った
- 914 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 13:28:03.79 ID:CtBOeO2p.net]
- 以下のhogeを定義してください
foldl' f a xs = foldr1 seq $ hoge $ scanl f a xs hoge xs = ???
- 915 名前:デフォルトの名無しさん [2017/08/24(木) 19:41:48.97 ID:QM9NdRuY.net]
- https://wandbox.org/permlink/HLJOHIGKIX8APzrZ
引数4つのfoldrがよくわからない foldr f g [1..9] 707
- 916 名前:905 [2017/08/24(木) 20:30:17.00 ID:QM9NdRuY.net]
- >>905は事故解決しました
- 917 名前:905 [2017/08/24(木) 20:49:44.49 ID:QM9NdRuY.net]
- 引数の適用順序の理解が足りないだけでした
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 と括れば理解できました
- 918 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 23:08:48.67 ID:RV3Vojhw.net]
- Data.Map.findWithDefault について質問です
マップに存在しなかったからデフォルト値を返したのか、それともマップに存在したからそれを返したのか 一目判らないとき、デバッグでどうやって判定しますか?
- 919 名前:デフォルトの名無しさん mailto:sage [2017/08/24(木) 23:40:45.91 ID:Drr24sOi.net]
- 判定不可能でありそれが意図するところじゃね?
変な値をデフォルトに入れておくか a->k->Map k a->Either a a的なのを用意するしかないんじゃ
- 920 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 00:15:34.79 ID:eQ9TUNW0.net]
- findWithDefault d k m = maybe (trace "default" d) (trace "existed") $ Map.lookup k m
- 921 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 05:39:52.91 ID:Qp5pyEwS.net]
- >>910
やったぜ。ドバァーっとヒット/ミス/更新がその時の検索キーと共に時系列で出てきた。 もう気が狂う程気持ちええんじゃ。 ログまみれのコンソールを見つめてメモ化再帰の効果を確認したりした。ああ〜〜たまらねえぜ。(ありがとうございました)
- 922 名前:デフォルトの名無しさん mailto:sage [2017/08/25(金) 06:18:21.22 ID:eQ9TUNW0.net]
- わろた
- 923 名前:デフォルトの名無しさん mailto:sage [2017/08/26(土) 04:35:19.01 ID:gyHjYOL6.net]
- >>910
ポイントフリー化に成功しました findWithDefault = curry.(.uncurry Map.lookup).(`maybe` trace "existed").(trace "default") https://ideone.com/RVpv4o
- 924 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 10:59:59.32 ID:4lrctZxR.net]
- 新しい言語を勉強してると「Haskellならこう書けるのになんだかな〜」となってしまう
- 925 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 14:36:34.73 ID:Qxc6OkmQ.net]
- Haskell書いてると「OCamlならこう書けるのになんだかな〜」となってしまう
- 926 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 14:47:58.47 ID:Ca4b6AZL.net]
- そま?例えば?
- 927 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 16:59:34.07 ID:weKjOry2.net]
- 岡村の方が速いらしいっすよ。でも、そうですね…やっぱり僕は、王道を征く、Haskell系ですか
- 928 名前:デフォルトの名無しさん mailto:sage [2017/08/29(火) 19:06:06.26 ID:Qxc6OkmQ.net]
- 多相ヴァリアント
- 929 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 16:54:11.68 ID:osPI36Tt.net]
- 双方向リンク系のデータ構造って、Haskell で作るのムズいね。
作るだけなら良いけど、更新時の処理で頭こんがり。 任意のノードに外部からアクセス用リンクが張ってあると もう訳分からん。
- 930 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 17:07:44.85 ID:YH54NEsT.net]
- そういうことするなっていう設計の言語で強引にしようとしたらわけわからなくなるよ
- 931 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 17:18:14.50 ID:osPI36Tt.net]
- >>920
そういうことするなってのは入門書には書いてないじゃん。 じゃあ、ちょっくらやってみようか、ってなるのがプログラマでしょ。 できるかもしれんし、できんかもしれん。 まぁ、かなりムズいなってのは体験して分かった。
- 932 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 17:24:15.30 ID:YH54NEsT.net]
- >>921
あー。Haskellでは状態を変更しない為に単方向リストを用いるって書いてなかった?
- 933 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 17:35:40.48 ID:osPI36Tt.net]
- >>922
リストの定義とか使い方とかは載ってたけど、 なんで単方向のなのかの説明は無かったよ。 「Haskell:The Craft of Functional Programming」 「Beginning Haskell: A Project-Based Approach」
- 934 名前:デフォルトの名無しさん mailto:sage [2017/08/30(水) 17:47:54.21 ID:YH54NEsT.net]
- マジかぁ……
- 935 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 03:30:11.22 ID:lYwDQiZm.net]
- Purely Functional Data Structuresなら触れられてるかと思って探してみたけど
そもそも双方向連結リスト出てこないな(´・ω・`) でも永続データ構造の概念を知ればなぜ扱われていないかが分かるだろう多分
- 936 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 05:24:22.47 ID:8YNqT7yd.net]
- 何で双方向リストの必要なんかあるんですか
途中で戻るとか男らしくないっすよ
- 937 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 07:18:24.63 ID:3UP7YVEo.net]
- >>926
巨大な双方向グラフを作ることになったんだけど、 使い方は次の通りちょっと特殊。 * あるノードにアクセスしたら、その近隣のノードも集中的にアクセスすることが多い * ノードが持つ値の読み書きアクセスが圧倒的に多く、グラフの形を変えることは少ない * ノードの値の書き込みアクセスよりは読み取りアクセスの方が多い 既存の汎用的なグラフ ライブラリと、双方向リンクで自作したグラフ ライブラリとで、 どっちが効率いいか実験してみようと思ったんだ。 でも双方向リンクは、ひとつのノードの値を変えるためにどうしてもグラフ全体を作り直す羽目になる。 どうにかならんものかと考えてたけど、どうにもならんね・・・
- 938 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 09:37:24.20 ID:z8GPJM/w.net]
- 「doubly linked list haskell」でググって適当な実装拾う
- 939 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 11:49:25.22 ID:lYwDQiZm.net]
- すごハスにあるようなZipper構造かな必要なのは
- 940 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 12:38:50.35 ID:cadjyHiv.net]
- 書き換えしないんだったら ([a], a, [a]) みたいなので充分なんだよな
コモナドにしてどうたらとか余計な話も無視して
- 941 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 12:49:49.13 ID:3UP7YVEo.net]
- あの、欲しいのはリストじゃなくてグラフなんだ。
だから、zipper 系とは違う。
- 942 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 14:03:01.85 ID:UJfUdOL2.net]
- 最低限木じゃないと効率的かつ単純なのは無理なんじゃないかな?
あんま自信ないけど
- 943 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 14:05:39.83 ID:3UP7YVEo.net]
- 皆のレスがどうも勘違いしてると思ってたら、
俺が最初に双方向リンクと言ってしまったからか。 ごめん、相互リンクだ。
- 944 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 14:16:21.20 ID:3UP7YVEo.net]
- >>932
木構造でも、親ノードへのリンクを入れると相互リンクになって難しくなるよね。 ひとつのノードの値を変えるためには、 ツリー全体を作り直すことになるんじゃないかな。 HaskellのDOMツリーのデータ構造とかどうなってるんだろ・・・
- 945 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 14:36:16.80 ID:3UP7YVEo.net]
- よく考えたら、リストとかツリーでも、
途中のノードの値を変えたかったら、 そのノードまでリンクで繋がってる全ノードは、 新しくリンクを張り直さなくちゃいけないんだね。
- 946 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 16:07:16.49 ID:ByIgTrbm.net]
- そうです。途中の値の変更は
リストならO(n) ツリーならO(log n)
- 947 名前:デフォルトの名無しさん mailto:sage [2017/08/31(木) 17:20:58.63 ID:UJfUdOL2.net]
- >>934
ランダムアクセスしないなら木に入れなくてもその都度親リストを作ればいいんだけどね なおかつそれをカーソル的に使ってやれば平均で更新のコストも減らせる ってこれzipperか
- 948 名前:デフォルトの名無しさん [2017/09/01(金) 01:21:03.60 ID:5J9AnuIe.net]
- 何が何でも1つのプログラミング言語で何とかしようとするのって
異国に行っても母国語で通そうとする観光客と同じ
- 949 名前:デフォルトの名無しさん mailto:sage [2017/09/01(金) 06:41:46.01 ID:YbmVmXZP.net]
- >>938
ひとつの言語がどこまでできて、何が得意で何が苦手なのか、 ひとつの言語に集中してそういうのを学ぼうとするのも、 おまえの言う「母国語で通そうとする観光客」カテゴリに入るのか?
- 950 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 01:43:24.06 ID:6rFZUKZZ.net]
- >何が何でも1つのプログラミング言語で何とかしようとするのって
>異国に行っても母国語で通そうとする観光客と同じ こういうやつにかぎってポリグロッタルコストを甘く見てる
- 951 名前:デフォルトの名無しさん [2017/09/02(土) 02:26:59.07 ID:zv/5K5Jn.net]
- 私はHaskell以外のプログラミング言語で書く気はありません
- 952 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 03:52:13.44 ID:qGW8qyv/.net]
- 慣れるまで大変だけど、慣れたら居心地いい気がする
- 953 名前:デフォルトの名無しさん mailto:sage [2017/09/02(土) 07:28:06.22 ID:pdF7ruXY.net]
- 困ったらFFIでC呼び出せばいいだけだから助かる
- 954 名前:デフォルトの名無しさん mailto:sage [2017/09/08(金) 23:35:36.55 ID:r8Qtf4kd.net]
- ICFP 2017 で発表された資料、成果や知見はどこかで後悔されたりしないんですか?
動画が公開されてるんなら、有料でも見たいです。
- 955 名前:デフォルトの名無しさん [2017/09/09(土) 18:15:24.47 ID:lkyt770O.net]
- 発表者各自が公開してるの地道に探すしかねーんでないの
ICFP Conference(@icfp_confere
- 956 名前:nce)さん | Twitter
https://twitter.com/icfp_conference [] - [ここ壊れてます]
- 957 名前:デフォルトの名無しさん mailto:sage [2017/09/09(土) 20:11:43.28 ID:TPWLKlk7.net]
- >>945
やはりそうですか。 毎年そうやって発表者や参加者の発信を探すのですが、 分散しており、詳しいことは書いてないことも多く、 情報集めに苦労する割には、たいてい徒労に終わります。 有料でいいので公式がまとめて公開してくれるといいのにと ここ数年つたない英語でメールを出しているのですが、 相手にしてもらえませんね。 すいません、愚痴でした。
- 958 名前:デフォルトの名無しさん [2017/09/09(土) 23:36:02.27 ID:9IxpzJRD.net]
- 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 www.sigplan.org/OpenTOC/icfp16.html フェイスブック、レディっと、ラムダザウルチメイトなどの良く知られた媒体でも 事前告知や事後報告があると思う
- 959 名前:デフォルトの名無しさん mailto:sage [2017/09/10(日) 00:33:58.75 ID:et8drD+r.net]
- >>947
指摘を受けて、もしかしてと思い、改めて公式サイトの中を探してみましたら、 paper は公開されていることが分かりました。 過去のも見てみましたら、去年のもの paper にはアクセスできるようでした。 (その前のは公式からはリンクは張られていない模様) video も年によってはリンクが張られていたりします。 なかなかぱっと見では分かりにくいところにリンクがあるのですが、 やはり探し方が悪かったみたいでお恥ずかしいです。 ちなみに、ICFP は国際的な関数型言語の会議です。 使う側、処理系側双方の最新情報を発表したり、 ワークショップが開かれていたりします。
- 960 名前:デフォルトの名無しさん [2017/09/11(月) 00:32:10.78 ID:Xe2WUSa/.net]
- 問題解決もしくは近づいたのなら何よりです
- 961 名前:デフォルトの名無しさん mailto:sage [2017/09/11(月) 23:17:06.08 ID:NiRp1zJ5.net]
- Haskellの正規表現ってどのライブラリを使うのが無難?
Text.Regex.Posixをimportしようとすると、Text.Regex.BaseかText.Regex.PCREの間違いじゃね?って言われて困惑
- 962 名前:デフォルトの名無しさん [2017/09/13(水) 18:15:30.36 ID:15e8c4wP.net]
- (´・ω・`)あのー
なにかおすすめの参考書ありませんか? 初心者です むちゃくちゃ簡単でやさしく書いてるのが良いです アマゾンで見つけて最近出たみたいなんだけどこれはどうなの? Haskellによる関数プログラミングの思考法 https://www.amazon.co.jp/dp/4048930532/ref=cm_sw_r_cp_api_ozpUzbZS57HY2
- 963 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 19:15:57.75 ID:jV0bEQ9+.net]
- 正直Haskellで「簡単でやさしく」は無理です
諦めてすごいH本やHaskellWikI,Hoogleや各種書籍、サイトを何度も往復して苦しみながら覚えてください
- 964 名前:デフォルトの名無しさん [2017/09/13(水) 19:18:52.25 ID:15e8c4wP.net]
- (´・ω・`)はい
- 965 名前:デフォルトの名無しさん mailto:sage [2017/09/13(水) 19:53:59.78 ID:4h5PMlCQ.net]
- すごいHaskell楽しくなんとかって奴がいいらしいよ
あとリアルワールドHaskell
- 966 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 00:00:37.91 ID:55xYcYks.net]
- 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ってけっこう 多いのな ビックリした
- 967 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 01:28:21.76 ID:kgKbKDJJ.net]
- >>951
他の人も書いてるけどやはり「すごいHaskell」がとっつきやすさは高いと思う それでいて内容もちゃんとしている 「関数プログラミングの思考法」もいい本だとは思うのだが 目的がアルゴリズムデザインとかの方面であんまり初心者向けっぽくない
- 968 名前:デフォルトの名無しさん [2017/09/14(木) 06:01:32.83 ID:yKCuCAfu.net]
- >>954
>>956 (´・ω・`)すごいHaskell読んでみます ありがとー
- 969 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 09:24:06.36 ID:ux4IsQoU.net]
- 英語が読めればwikibooksのやつもどうですか?
自分は"プログラミングHaskell"から入ったので初見じゃないですが、良さげに見えます。 内容も定期的に更新かかってますし。
- 970 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 10:02:22.29 ID:Yrr+4vGX.net]
- 「しゅごいHaskell」はダブルVサイン出しながら
読まなきゃいかんのでキーボードが打てない
- 971 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 16:15:03.19 ID:fLwKChPf.net]
- What does it mean?
- 972 名前:デフォルトの名無しさん mailto:sage [2017/09/14(木) 23:15:23.23 ID:BKIQZ2N0.net]
- He probably meant Haskell wikibook page is upto dated. And that is also why I recommend it for beginners too.
- 973 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 08:29:13.24 ID:K8WAqD4o.net]
- >>957
あなたがそもそも関数型プログラミングに慣れ親しんでいないのであれば、まずはそこが第一の壁となるでしょう まずはリストをメインに再帰やマッピング、畳み込みといった操作に慣れましょう またHaskellはデフォルトでカリー化されているのでその妙味も十分に味わいましょう 次に壁となるのは、型や型クラスでしょうか? ここではクラスやインスタンスといった単語が出てきますが、それらはいわゆるオブジェクト指向で使われているものとは意味が全く違うので注意してください 型に慣れ親しみ、常に適切な型を選択できるよう意識してください そうすればコンパイラがあなたの強い味方となってくれます 最後に入門者の壁となるのは、おそらくモナドでしょう モナドは数学の圏論由来の概念ですが、別段圏論に詳しくある必要はありません 基本的な部分では、モナドは単なる文脈であり、文脈を表すためのコンテナです しかし、それ以上に高度で抽象的なことをやろうとすると、その理解では行き詰まるかもしれません そんなときは、圏論に軽く触れてみるのもいいでしょう 少なくともかの有名な 「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」 をざっくりとでもいいので理解できれば、新たな視界が開けると思います Haskellは簡単な言語でもやさしい言語でもありませんが、その代わり高度に抽象化された、バグの少ないプログラミングが可能です あなたの成功を心より祈っています
- 974 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 08:57:14.76 ID:8dqnOzco.net]
- 歳を取って反射神経鈍ってくると一々詳細を語るのが億劫になって抽象的なまま話を進めたくなるよね
Haskellは抽象的にプログラミングするインフラを整備している?
- 975 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 18:00:40.28 ID:d/L5NKte.net]
- Map a (Map b c)
Map (a,b) c どっちが速いかみんな一度は悩んだことあると思う
- 976 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 22:35:43.14 ID:znUIhbu+.net]
- 悩まんでしょ
- 977 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 22:47:16.31 ID:eUG8Jdoq.net]
- コンパイルしたらどうせ一緒になると思って適当に書いてたけど、変わるの?
- 978 名前:デフォルトの名無しさん mailto:sage [2017/09/15(金) 23:09:08.09 ID:4fuQ9N5K.net]
- Mapは平衡二分探索木だから各Map b cのサイズに開きがあると遅くなるね
- 979 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 13:16:45.55 ID:u+a6R9+A.net]
- newtype F a b c = F (Map a (Map b c))
newtype G a b c = G (Map (a, b) c) これでFとGはどうせ一緒のクラスになる こういうポリモーフィズムの意味がわかってる人は速さで悩まない
- 980 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 15:43:07.25 ID:QR311jcD.net]
- それは実装を隠蔽しただけで速さの悩みを解決したわけではないのでは…
もちろん実装を隠蔽しておいて後でより速い実装に 容易に交換できるようにしておくのは大変有用だが
- 981 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 20:52:50.94 ID:u+a6R9+A.net]
- pi :: Floating a => a
円周率piの値を隠蔽し精度の悩みを解決
- 982 名前:デフォルトの名無しさん mailto:sage [2017/09/16(土) 21:24:55.55 ID:MfZyyhcD.net]
- 今更だけど、いつの間にか cabal のバージョンが 1 から 2 になってる
なんか大きく変わったの?
- 983 名前:デフォルトの名無しさん [2017/09/17(日) 08:09:36.24 ID:QPoZRnuU.net]
- >>4にある解説ページをちらっとみた
たしかに数式に似た感じでものすごく簡単に書けるみたいだね たしかに直感的だとおもった
|

|