トップページtech
1002コメント312KB

関数型プログラミング言語Haskell Part28 [転載禁止]©5ch.io

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2015/04/10(金) 01:30:32.61ID:KZNYLMbm
関数型プログラミング言語 Haskell について語るスレです。

haskell.org (公式サイト)
http://www.haskell.org/

前スレ
関数型プログラミング言語Haskell Part27
http://peace.2ch.net/test/read.cgi/tech/1420718555/
0002デフォルトの名無しさん2015/04/10(金) 01:36:19.62ID:KZNYLMbm
関連サイト
(英語)
Haskell - Wikibooks, open books for an open world (ページ内に内容をまとめたPDFあり)
http://en.wikibooks.org/wiki/Haskell

Learn You a Haskell for Great Good! (『すごいHaskellたのしく学ぼう!』の無料オンライン版)
http://learnyouahaskell.com/chapters

Real World Haskell (同名書籍の無料オンライン版)
http://book.realworldhaskell.org/read/

(以下、日本語)
Haskell入門 5ステップ - HaskellWiki (公式サイト内、日本語入門セクション)
https://wiki.haskell.org/Haskell%E5%85%A5%E9%96%80_5%E3%82%B9%E3%83%86%E3%83%83%E3%83%97

Haskell - Wikibooks (先述Wikibooksの日本語版。未編集の項目、多)
http://ja.wikibooks.org/wiki/Haskell

Programming in Haskell
http://www.sampou.org/cgi-bin/haskell.cgi

Haskell のお勉強
http://www.shido.info/hs/

Haskell Programming
http://www.geocities.jp/m_hiroi/func/haskell.html

本物のプログラマはHaskellを使う:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/

[入門]関数プログラミング―質の高いコードをすばやく直感的に書ける!
http://gihyo.jp/dev/feature/01/functional-prog
0003デフォルトの名無しさん2015/04/10(金) 01:39:03.48ID:KZNYLMbm
過去スレ一覧
26) http://peace.2ch.net/test/read.cgi/tech/1406436392/
25) http://peace.2ch.net/test/read.cgi/tech/1393313450/
24) http://toro.2ch.net/test/read.cgi/tech/1382705669/
23) http://toro.2ch.net/test/read.cgi/tech/1376111807/
22) http://toro.2ch.net/test/read.cgi/tech/1364009659/
21) http://toro.2ch.net/test/read.cgi/tech/1358702176/
0004デフォルトの名無しさん2015/04/10(金) 01:41:33.49ID:KZNYLMbm
20) http://toro.2ch.net/test/read.cgi/tech/1350428908/
19) http://toro.2ch.net/test/read.cgi/tech/1340760070/
18) http://toro.2ch.net/test/read.cgi/tech/1331902463/
17) http://toro.2ch.net/test/read.cgi/tech/1325510368/
16) http://toro.2ch.net/test/read.cgi/tech/1317958045/
15) http://hibari.2ch.net/test/read.cgi/tech/1310199414/
14) http://hibari.2ch.net/test/read.cgi/tech/1299385928/
13) http://hibari.2ch.net/test/read.cgi/tech/1286706874/
12) http://hibari.2ch.net/test/read.cgi/tech/1272536128/
11) http://pc12.2ch.net/test/read.cgi/tech/1252382593/
10) http://pc12.2ch.net/test/read.cgi/tech/1231861873/
09) http://pc11.2ch.net/test/read.cgi/tech/1211010089/
08) http://pc11.2ch.net/test/read.cgi/tech/1193743693/
07) http://pc11.2ch.net/test/read.cgi/tech/1174211797/
06) http://pc11.2ch.net/test/read.cgi/tech/1162902266/
05) http://pc8.2ch.net/test/read.cgi/tech/1149263630/
04) http://pc8.2ch.net/test/read.cgi/tech/1140717775/
03) http://pc8.2ch.net/test/read.cgi/tech/1076418993/
02) http://pc2.2ch.net/test/read.cgi/tech/1013846140/
01) ttp://pc.2ch.net/tech/kako/996/996131288.html 👀
Rock54: Caution(BBR-MD5:e2e65a1aac6dd9c8b5655464158bdac3)
0005デフォルトの名無しさん2015/04/10(金) 09:33:29.65ID:xXBTN+Xq
どちらが正統か?
0006デフォルトの名無しさん2015/04/11(土) 10:52:03.73ID:PPihF5HG
銀河帝国正統政府()
0007デフォルトの名無しさん2015/07/14(火) 07:57:08.65ID:dR+Nasf+
このスレを実質「関数型プログラミング言語Haskell Part29」として活用します。
前スレ(Part28)のレス数が1000になってから利用してください。
以下、テンプレ。
0008デフォルトの名無しさん2015/07/14(火) 07:57:56.76ID:dR+Nasf+
関数型プログラミング言語 Haskell について語るスレです。

haskell.org (公式サイト)
https://www.haskell.org/

前スレ
関数型プログラミング言語Haskell Part28
http://peace.2ch.net/test/read.cgi/tech/1428535861/
0009デフォルトの名無しさん2015/07/14(火) 08:00:30.32ID:dR+Nasf+
過去スレ一覧
27) http://peace.2ch.net/test/read.cgi/tech/1420718555/
26) http://peace.2ch.net/test/read.cgi/tech/1406436392/
25) http://peace.2ch.net/test/read.cgi/tech/1393313450/
24) http://toro.2ch.net/test/read.cgi/tech/1382705669/
23) http://toro.2ch.net/test/read.cgi/tech/1376111807/
22) http://toro.2ch.net/test/read.cgi/tech/1364009659/
21) http://toro.2ch.net/test/read.cgi/tech/1358702176/
0010デフォルトの名無しさん2015/07/14(火) 08:00:59.14ID:dR+Nasf+
20) http://toro.2ch.net/test/read.cgi/tech/1350428908/
19) http://toro.2ch.net/test/read.cgi/tech/1340760070/
18) http://toro.2ch.net/test/read.cgi/tech/1331902463/
17) http://toro.2ch.net/test/read.cgi/tech/1325510368/
16) http://toro.2ch.net/test/read.cgi/tech/1317958045/
15) http://hibari.2ch.net/test/read.cgi/tech/1310199414/
14) http://hibari.2ch.net/test/read.cgi/tech/1299385928/
13) http://hibari.2ch.net/test/read.cgi/tech/1286706874/
12) http://hibari.2ch.net/test/read.cgi/tech/1272536128/
11) http://pc12.2ch.net/test/read.cgi/tech/1252382593/
10) http://pc12.2ch.net/test/read.cgi/tech/1231861873/
09) http://pc11.2ch.net/test/read.cgi/tech/1211010089/
08) http://pc11.2ch.net/test/read.cgi/tech/1193743693/
07) http://pc11.2ch.net/test/read.cgi/tech/1174211797/
06) http://pc11.2ch.net/test/read.cgi/tech/1162902266/
05) http://pc8.2ch.net/test/read.cgi/tech/1149263630/
04) http://pc8.2ch.net/test/read.cgi/tech/1140717775/
03) http://pc8.2ch.net/test/read.cgi/tech/1076418993/
02) http://pc2.2ch.net/test/read.cgi/tech/1013846140/
01) http://pc.2ch.net/tech/kako/996/996131288.html
0011関連サイト2015/07/14(火) 08:02:02.95ID:dR+Nasf+
(英語)
Haskell - Wikibooks, open books for an open world (ページ内に内容をまとめたPDFあり)
https://en.wikibooks.org/wiki/Haskell

Learn You a Haskell for Great Good! (『すごいHaskellたのしく学ぼう!』の無料オンライン版)
http://learnyouahaskell.com/chapters

Real World Haskell (同名書籍の無料オンライン版)
http://book.realworldhaskell.org/read/

(以下、日本語)
Haskell入門 5ステップ - HaskellWiki (公式サイト内、日本語入門セクション)
https://wiki.haskell.org/Haskell%E5%85%A5%E9%96%80_5%E3%82%B9%E3%83%86%E3%83%83%E3%83%97

Haskell - Wikibooks (上記Wikibooksの同タイトル日本語版。多くの項目が未編集)
https://ja.wikibooks.org/wiki/Haskell

Programming in Haskell
http://www.sampou.org/cgi-bin/haskell.cgi

Haskell のお勉強
http://www.shido.info/hs/

Haskell Programming
http://www.geocities.jp/m_hiroi/func/haskell.html

本物のプログラマはHaskellを使う:ITpro
http://itpro.nikkeibp.co.jp/article/COLUMN/20060915/248215/

[入門]関数プログラミング―質の高いコードをすばやく直感的に書ける!
http://gihyo.jp/dev/feature/01/functional-prog
0012デフォルトの名無しさん 転載ダメ©2ch.net2015/07/14(火) 19:51:26.71ID:V8pOZFXs
関連書籍検索一覧 (「米」はamazon米国、主に洋書。「日」はamazon日本、主に和書)

Keyword = "Haskell"
「米」 http://www.amazon.com/s/?url=node%3D3839&;field-keywords=Haskell
「日」 http://www.amazon.co.jp/s/?url=node%3D492352&;field-keywords=Haskell

Keyword = "functional programing" 「米」 | "関数 プログラミング" 「日」
「米」 http://www.amazon.com/s/?url=node%3D3839&;field-keywords=functional+programing
「日」 http://www.amazon.co.jp/s/?url=node%3D492352&;field-keywords=%E9%96%A2%E6%95%B0%20%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0

----
テンプレは以上です。
0013デフォルトの名無しさん2015/07/15(水) 20:55:40.05ID:70iQnSqB
新たなるオライリー本か?
http://www.amazon.co.jp/dp/B00TN97BE2
0014デフォルトの名無しさん2015/07/16(木) 18:27:15.12ID:gee943jx
>>13
どさくさ宣伝乙。 帰って、どうぞ
0015デフォルトの名無しさん2015/07/18(土) 01:57:00.72ID:wQVOOXnd
変なAAが貼ってある方のスレは隔離スレなのか?
こっちよりレス伸びてるけども
0016デフォルトの名無しさん2015/07/18(土) 20:49:05.37ID:8uXNBMZf
>>15 本来の意図は違うと思うが、隔離スレにしたほうが良いからそうしようぜ
0017デフォルトの名無しさん2015/11/10(火) 07:03:48.22ID:RJS+i6XX
foo 0 = 〜
foo 1 = 〜
foo x = 〜
って書くのと

foo x
| x == 0 = 〜
| x == 1 = 〜
| otherwise = 〜
って書くのと

オススメな記述ってどっち?
使い分け方のヒントみたいなのあったりする?
それとも完全に好みの問題?
0018デフォルトの名無しさん2015/11/10(火) 07:24:21.46ID:tbHGFOTY
範囲で分けるとき下使ってる
0019デフォルトの名無しさん2015/11/10(火) 15:09:26.37ID:+Ply0ARe
パターンマッチはガード条件よりも出来ることが狭い。
なるべく狭い意味の機能を使った方が意図を特定しやすい。
よって、可能ならば前者の方が望ましいと思う。

でもまあ、そんなに厳密なもんじゃないよ。
それを原則としつつも見易いと思う方を柔軟に選ぶしかないんじゃないか。
0020デフォルトの名無しさん2015/11/10(火) 19:45:40.64ID:RJS+i6XX
>>18-19
d
0021デフォルトの名無しさん2015/11/13(金) 21:46:49.64ID:wOHg++fH
       自民党 対 国民!  死者数、戦時なみに!


川崎病の年間患者数、史上最高に 1万5千人を突破、ピーク時を超える 最初の報告は水爆実験後。本当の原因は被曝
震災以降に死亡者数が、第二次大戦に匹敵するほど急増している
厚生労働省によると平成23年から平成25年の累計死亡者数は360万人以上に急増。今の日本は太平洋戦争時の時と同じくらいの勢いで人が亡くなっている
https://twitter.com/tokai amada/status/664927655544795136

除染袋回収の作業員5人 疲労で動けず、自衛隊など救助  疲労じゃないだろう、被曝障害だろうよ 死んだように眠る人々(写真多数)
http://s.ameblo.jp/kaito000777/entry-12031605335.html

【川島なお美の食べて応援が恐怖すぎる】自宅でも進んで食べて応援
1年後・軽くぶつけただけで肋骨骨折 2年後・眼球から出血は半年に一度 3年後・胆管に腫瘍、血液検査は異状無し 4年後・逝去 夫は片目失明、愛犬もがん
https://twitter.com/2ch_NPP_info/status/648256313571479552

・・・ 今も、原子力緊急事態宣言中… 対策本部長は安倍首相。


        安倍が国民を被爆させながら核兵器を密造している!?

三菱商事の核ミサイル担当重役は安倍晋三の実兄、安倍寛信 三菱重工の重役でもあるらしい
これがフクイチで核弾頭ミサイルを製造していた疑惑がある 書けばツイッターで速攻削除されている
https://twitter.com/toka iamada/status/664017453324726272

安倍晋三の兄が関与している三菱重工 核開発疑惑について いくつかツイートしたが、反応がないから変だと思って、自分のタイムラインを調べてみたら、
完全に削除されていた 私のツイートで、安倍政権に都合の悪い情報は速攻削除されている これは驚いた ここまでやるのか
https://twitter.com/toka iamada/status/664016524592574464

先ほど、まだ数分以内に、三菱重工の核開発疑惑について、いくつかツイートしたが、検索しても出てこない 多くの人のタイムラインに出てこない ツイート直後に消されてしまったようだ
https://twitter.com/toka iamada/status/664015521830952960
0022デフォルトの名無しさん2015/11/30(月) 04:16:13.25ID:3yHpaj1I
data Foo = Foo {}

で{}の中身がない場合ってどういう時に使うものなのでしょうか
0023デフォルトの名無しさん2015/11/30(月) 08:16:05.14ID:yyLLqUKU
【 オンラインTCGエディター 】 >>1

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ライブオン、ディメンション・ゼロ、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみて。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。

エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。

遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。

各社TCGを再現するテストプレイ ⇒ 更に改良や修正。

機能制限した下位版を5万円以上で発売 + デュエリ−グ用に改造した上位版でサーバー稼動=営業開始。

下位版の改造および商用利用には、別途で当社との契約が必要。

さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1448404407/-13
0024デフォルトの名無しさん2015/12/22(火) 00:36:50.33ID:JyKdzAuM
この記事の宣伝か何か?


本物のプログラマはHaskellを使う 日経ソフトウエア
第58回 Cの配列をHaskellで利用する 2013/08/07
http://itpro.nikkeibp.co.jp/article/COLUMN/20130806/496825/
0025デフォルトの名無しさん2015/12/27(日) 20:26:50.91ID:Uc9cUKER
coqに比べたらhaskellなんかオモチャだわ。
0026デフォルトの名無しさん2016/01/12(火) 20:04:56.64ID:uxklQDbX
構文解釈にバグがあったらコンパイル通るんじゃねえの
0027デフォルトの名無しさん2016/01/12(火) 20:25:39.88ID:3+klCnXk
こういうのも誤爆って言うのかね
0028デフォルトの名無しさん2016/01/31(日) 13:36:39.77ID:AKL8QDPC
すごいH 批判されてるときあるけど
具体的な話は聞いたことがない
どのへんがどうダメなのか解る人いますか?

俺は擁護も批判もできないレベルなんでなんも言えないw
0029デフォルトの名無しさん2016/01/31(日) 16:19:13.20ID:gaE4MpDR
自動的に処理を並列化してくれるというところに俺は魅力を感じますね。
メニーコア時代には32Kコアプロセッサが普通になる。
そうなるとHaskell以外の選択肢が無いんですよ。
0030デフォルトの名無しさん2016/01/31(日) 18:20:42.41ID:d3QvGQc6
>>29
メニーコア,メニーコア,っていうけど haskell の実装がメニーコアにすでに適用している事例はあるの?
個人的には clojure の STM のような,具体的なカラクリのアイディアがない haskell が並列化に対応できるようになるとは思えない

haskell のこの方面での将来性は,ない
0031デフォルトの名無しさん2016/01/31(日) 18:32:52.82ID:4aqfDNg2
ただのキチガイだから相手にするな
0032デフォルトの名無しさん2016/01/31(日) 19:23:48.50ID:F9NTpP4r
>>30
キチガイのせいで馬鹿まで寄ってきたな haskellにもある物持ち出して、優位だと語るなんて笑える
haskellが遅延評価なのも忘れたのか?
どうせその調子だとclojureもまともに触ってないんだろ?
0033デフォルトの名無しさん2016/01/31(日) 21:23:02.45ID:9irTPz61
>>30
>個人的には clojure の STM のような

STMとか普通にあるんだけど……
0034デフォルトの名無しさん2016/01/31(日) 21:25:39.77ID:9irTPz61
>>30
>haskell の実装がメニーコアにすでに適用している事例はあるの?

「適用 apply」と「適応 adapt」を間違える日本語の不自由な子が増えてるよね
それにしてもまだ日本語がおかしいけど

それはともかく、並列性のボトルネックがないソフトェアならGHCでわりと
素直にスケールするのも知らんのかしら
0035デフォルトの名無しさん2016/01/31(日) 21:45:08.39ID:zyH0pBzu
メニーコア時代にはHaskell以外すべて淘汰されるんですよ。
0036デフォルトの名無しさん2016/02/04(木) 13:53:14.89ID:UJ/Pq+8G
ここが実質Part 30でいいんだろうか

>>1
■前スレ
関数型プログラミング言語Haskell Part29
http://peace.2ch.net/test/read.cgi/tech/1436869629/
0037デフォルトの名無しさん2016/02/05(金) 05:19:19.84ID:xfnoaCBb
関数型言語の話題って素人の衒学家が多いのは何でなんだろうな
とりあえず触ってみりゃ欠点もそれなりに多い事に気づくと思うが
0038デフォルトの名無しさん2016/02/05(金) 08:38:32.73ID:19bi+l7A
そりゃ関数型言語の話題で玄人ってのはCSの一部にしかいないからだw
0039デフォルトの名無しさん2016/02/05(金) 20:24:20.78ID:xfnoaCBb
玄人がいないって意味じゃねえよ…
極端だな
0040デフォルトの名無しさん2016/02/05(金) 20:24:21.22ID:/MC0YSt9
tanakhがHaskellで仕事してない時点で察しろ
0041デフォルトの名無しさん2016/02/05(金) 21:00:17.25ID:CS7E051N
>>37
欠点と言っても、本質とは関係ないからな。
Haskellに討ち滅ぼされた雑魚言語に絡まれるとかその程度。
唯一完成された言語だし、Haskell以外はすべて淘汰される。
0042デフォルトの名無しさん2016/02/06(土) 00:34:56.96ID:AtWB76qi
また胡乱な方向付けに
0043デフォルトの名無しさん2016/02/06(土) 00:55:24.18ID:bnndf23C
Haskellがすでに淘汰済みの残照な気が。
0044デフォルトの名無しさん2016/02/06(土) 06:38:48.88ID:qHjkJ1/w
前スレからわざと混乱するようなこと書いてるアホがいんだよ、無視しろ無視
0045デフォルトの名無しさん2016/02/06(土) 12:06:40.45ID:wrmjFiB3
そういえば無視というのは「見ない」ではなく「だんまり」って意味なんだよな
逆に「だんまり」といって相手を煽るのは「無視するな」ということ
0046デフォルトの名無しさん2016/02/06(土) 14:20:26.67ID:wrmjFiB3
ignore m = m >> return () -- 戻り値を無視するが副作用を無視しない

ignore' _ = return () -- 全て無視
0047デフォルトの名無しさん2016/02/06(土) 18:58:32.08ID:4z0/BkxB
アスペか糖質か
0048デフォルトの名無しさん2016/02/07(日) 08:09:04.81ID:cU6bDpiy
荒らしに反応するとき、荒らしもまたこちらに反応するのだ。byニーチェ
0049デフォルトの名無しさん2016/02/07(日) 09:44:32.12ID:fEVoSTHz
荒らしだと気付いてない奴がいるんだからしゃーなし
0050デフォルトの名無しさん2016/02/07(日) 10:09:33.89ID:/7Z+PXON
俺は個人的にはキャメル形式よりスネーク形式の方が断然好きなんだが、
Haskell のライブラリってなぜか知らんがキャメル形式で統一されてるよね。

プログラムを組むときは形式を統一すべきと言われる。
いろんな形式が混ざってると吐き気を催す人もいるらしい。
俺もやっぱり良い気はしない。

そこで、自分でプログラムを組むときは、
ライブラリの公開されている識別子を全てスネーク形式にしたラッパーを作り、
それを import してるんだが、これはキモイ?


もちろん、グループで組むときはみんなに合わせるし、
hackage に公開するライブラリはキャメル形式にするつもりだ。
0051デフォルトの名無しさん2016/02/07(日) 11:22:18.65ID:fu54F6yL
どっちでも気にならないようにすればいい
>吐き気を催す人
これはキチガイだから放置
0052デフォルトの名無しさん2016/02/07(日) 11:47:12.24ID:yu9AA7dR
正解が一つだから統一すべきって奴はキモイ
どれでも同じだから統一を手伝ってやるから金払えって奴は有能
0053デフォルトの名無しさん2016/02/07(日) 15:08:08.04ID:/PqCUlOY
OCamlは駱駝のくせにスネークなんだよな
個人的にはキャメルの方が好きだが
そもそも簡素でわかりやすい一語の識別子を使えばどっちもいらない
0054デフォルトの名無しさん2016/02/07(日) 18:19:17.65ID:yu9AA7dR
filenameがcase-sensitiveじゃなかったりするから大文字を使わない方が安全だとか
もともとOS依存に否定的だった場合は面子を保つために敢えて大文字を使うとか
0055デフォルトの名無しさん2016/02/07(日) 23:08:45.47ID:fEVoSTHz
hlintはスネークケースを叱るよね
0056デフォルトの名無しさん2016/02/08(月) 00:14:06.12ID:K7vwFuB3
>>54
その理屈はおかしい
ファイル名が case-insensitive だったところで
その言語(の識別子)が case-sensitive なら関係がない
0057デフォルトの名無しさん2016/02/08(月) 11:56:14.99ID:+KLQd2tl
>>56
ファイル名と直接関係あるのはモジュール
ただしモジュールと型が癒着していたり型と関数が癒着していたりすると影響が広がる
0058デフォルトの名無しさん2016/02/09(火) 20:08:55.36ID:T+WeLdAU
Haskellコンパイラをメイクするには前バージョンのHaskellコンパイラが要るんですよね?
じゃあ前バージョンのHaskellコンパイラをメイクするには前々バージョンのHaskellコンパイラが要るんですよね?
ということは、GCCからArmで動くHaskellコンパイラをメイクするには、C/C++で書かれた最後のバージョンのソースコードを探してきてそこから順番にメイクで辿って行かなきゃならないんですか?
0059デフォルトの名無しさん2016/02/09(火) 21:07:41.59ID:p2mta7H7
うるせえ死ね
0060デフォルトの名無しさん2016/02/09(火) 22:01:01.78ID:T+WeLdAU
ひぇ
0061デフォルトの名無しさん2016/02/09(火) 22:06:42.84ID:T/GcQe87
代数データ型のレコード名に困る。

data Common = Cmn Int String

data Type1 = T1 {num :: Int, cmn :: Common}
data Type2 = T2 {name :: String, cmn :: Common}

これだと当然 cmn 関数が2つ定義されてるからコンパイルエラーになる。

これの回避策として、cmn 関数をメンバに持つ型クラスを作る方法があるが、
オブジェクト指向のクラスのように型クラスを使うのは何か違う気がする。

かと言って、あとは両者の cmn で名前を変える方法しか思いつかない。
そりゃ終域が同じでも定義域が違うのだから別の関数になる理屈は分かるが、
関数の意味は同じなんだけどなぁ・・・

どうしたものか。
何かいい案はない?
0062デフォルトの名無しさん2016/02/09(火) 23:37:31.63ID:bzuQoNTa
冗談だよね? クロスコンパイラ知らない奴がいるわけ?

>>61
これは確かにHaskellのクソな点のひとつ
列多相(row polymorphism)が必要なので標準のHaskellではできない

GHC 7.12 でOverloadedRecordFields拡張が入って
お望みのことができるようになるが、それまで待てないなら
http://nikita-volkov.github.io/record/
というライブラリを検討してもいいかもしれない
0063デフォルトの名無しさん2016/02/10(水) 01:32:51.20ID:v+PYUzVT
Type1とType2の型は同じなんだけどなぁ

data Type0 a = T0 {uncmn :: a, cmn :: Common}
num t1 = uncmn t1 :: Int
name t2 = uncmn t2 :: String
0064デフォルトの名無しさん2016/02/10(水) 01:41:32.12ID:Jpj0GH1T
なんだこいつ
0065デフォルトの名無しさん2016/02/10(水) 16:17:31.06ID:v+PYUzVT
型の宣言には属人性があって、2種類の型を宣言する人もいれば1種類で済ます人もいる
0066デフォルトの名無しさん2016/02/10(水) 20:32:03.58ID:wJ3QdPqe
みんなありがと。

>>62
GHC 7.12 のリリースはまだ当分先だと思うから、record を試してみるよ。


>>63
誤解させたようですまん。
>>61 の例はあくまで例で、実際は Type1 と Type2 で持っているレコード数が異なるんだよ。

あと、それって

type Type1 = Type0 Int
type Type2 = Type0 String

ということ?
Type0 Int と type0 String は別の型じゃないの?


>>65
ごめん、もう少し噛み砕いて説明してくれると助かる。
どういこと?
0067デフォルトの名無しさん2016/02/10(水) 20:55:10.35ID:Jpj0GH1T
>>66
7.12は8.0になったんだった。すまん。
つい数日前にRC2まできたんで、もうすぐリリースされる。
ただ、OverloadedRecordFieldsが完全に入るわけじゃないようだ

https://ghc.haskell.org/trac/ghc/wiki/Records/OverloadedRecordFields/MagicClasses

8.0ではこれがまだ入らない。
当面はおとなしくrecordsライブラリを使うのがいいかもな
0068デフォルトの名無しさん2016/02/10(水) 22:27:56.35ID:v+PYUzVT
よく考えたらprivate変数のようなものを作る方が簡単だった
public変数はもうどうでもいい

newCounter = do {
n <- newIORef 0; -- private
return (readIORef n >>= \ k -> writeIORef n (k+1) >> return k)
}
main = do {
counter <- newCounter;
counter >>= print;
counter >>= print
}
0069デフォルトの名無しさん2016/02/11(木) 00:56:05.49ID:Nd3tdnXb
モナドが理解できなくて10年近く悩んでいる。
理解できれば死んでもいい。
0070デフォルトの名無しさん2016/02/11(木) 01:23:45.78ID:WmGIDCmu
これからはHaskellの時代だから頑張って理解したほうが良いよ。
0071デフォルトの名無しさん2016/02/11(木) 01:55:29.55ID:s0UUbhTE
IO、Maybe、Listをそれぞれ具体的に理解したら、それらに共通する
抽象的構造が漠然と理解できるようになる。話はそれからだ。

Functorを理解してApplicativeを理解すればMonadはすぐそこ。
MonadにできてApplicativeに出来ない事例をIOやListで書いてみれば、
Monadの意味もわかる。
0072デフォルトの名無しさん2016/02/11(木) 05:05:08.71ID:UHi7AMAe
何を以てモナドを理解したことになるのか
0073デフォルトの名無しさん2016/02/11(木) 09:54:22.24ID:mcDetqD3
>>72
入門書や解説書のモナドの章を「自分の言葉で書ける」ようになり、
なおかつ、読者が「なるほど」と言ってくれれば、自分は理解できてるなと安心できる。
0074デフォルトの名無しさん2016/02/11(木) 10:39:05.18ID:2qMTPVuS
Monadが理解できないならプログラミングやめちまえよ。
迷惑だわ。
0075デフォルトの名無しさん2016/02/11(木) 10:41:07.97ID:RWcQtaIC
サンクは二回以上評価しても同じなので必要なら一回だけ評価してメモ化するよね
IOは毎回結果が異なるので一回で終わらないがそれ以外はサンクと同じ物だよね
モナドは何の変哲もない型クラスだね
0076デフォルトの名無しさん2016/02/11(木) 10:48:22.39ID:4PPMlVIJ
モナドは窓を持たず
ただ表象するのみ
0077デフォルトの名無しさん2016/02/11(木) 15:22:54.23ID:Ijn2TjOB
また胡乱な方向へ
0078デフォルトの名無しさん2016/02/11(木) 15:33:12.95ID:g2tgmyMx
>>75
違う
0079デフォルトの名無しさん2016/02/11(木) 18:41:59.24ID:RWcQtaIC
いずれにせよ教える側に悪い奴がいるのは事実だよ
この状況でみんな善人ということはありえない
0080デフォルトの名無しさん2016/02/11(木) 19:33:58.12ID:s0UUbhTE
この人、統合失調かなんかなの?
0081デフォルトの名無しさん2016/02/11(木) 20:01:48.02ID:ZGIjujTB
ただのバ
0082デフォルトの名無しさん2016/02/11(木) 20:19:46.17ID:g2tgmyMx
いやキ
0083デフォルトの名無しさん2016/02/11(木) 22:32:37.77ID:h5Y5qyZF
いやケ
0084デフォルトの名無しさん2016/02/12(金) 22:34:57.40ID:Az+dNpcd
いやロー
0085デフォルトの名無しさん2016/02/13(土) 18:30:17.93ID:zeyk14CL
暗いと不平を言う前に進んで火を付けましょう。
0086デフォルトの名無しさん2016/02/13(土) 19:25:49.95ID:tYDOUXsU
ボワッ!

カジダー! ワー
0087デフォルトの名無しさん2016/02/13(土) 19:50:06.18ID:/Hz5ypwN
そして胡乱な方向へ(言ってみたかっただけ
0088デフォルトの名無しさん2016/02/14(日) 12:00:16.26ID:iEUC0Mwt
不平には問題提起の意味があります
問題提起する前に解決しましょうって言われたらどう思いますか
0089デフォルトの名無しさん2016/02/14(日) 12:50:37.93ID:T34rz49+
>>88
だったら、本人たちには適切に問題提起をする能力がないのだから、
あんたが代わりに翻訳して、普通の人に分かるように問題提起してくれよ。

でなきゃ、ただのノイズとして見逃される。
0090デフォルトの名無しさん2016/02/14(日) 13:37:03.55ID:iEUC0Mwt
>>89
それを誰に言いたいですか
言いたい相手はもう見つかっていますね
見逃されるというのは嘘ですね
0091デフォルトの名無しさん2016/02/14(日) 13:46:14.55ID:vmByG/Xl
そしてうどんな昼食へ
0092デフォルトの名無しさん2016/02/14(日) 15:13:51.42ID:cqB0Nh3J
そうか。
0093デフォルトの名無しさん2016/02/14(日) 15:22:10.99ID:cCh+B9qI
糖質さんに付きまとわれてるHaskellかわいそう
0094デフォルトの名無しさん2016/02/14(日) 16:04:41.95ID:XEWxVYXa
2ちゃんはオワコンだとしてお前ら普段どこでHaskellの話してるの
0095デフォルトの名無しさん2016/02/14(日) 16:06:28.06ID:XEWxVYXa
英語でいいとこ教えて
0096デフォルトの名無しさん2016/02/14(日) 17:35:47.39ID:cqB0Nh3J
Google+
0097デフォルトの名無しさん2016/02/14(日) 22:21:56.57ID:zI7ECB9O
data Hoge = Hoge {
a :: {
b :: Int
}
}
こんな感じで宣言する方法はないのでしょうか?
用途はネストしたJSONへの変換です。
0098デフォルトの名無しさん2016/02/16(火) 22:19:56.49ID:sJ0P3nVA
data A t = A {a :: t}
data B t = B {b :: t}
data Hoge = Hoge {
hoge :: A (
B Int
)
}
0099デフォルトの名無しさん2016/02/17(水) 03:41:21.57ID:1UNcQaMi
誰かが坂道発進は難しいと言うと苦手意識が形成され苦手になってしまう
誰かがS字・クランクは難しいと言うと苦手意識が形成され苦手になってしまう
誰かがポインタは難しいというと苦手意識が形成され苦手になってしまう
誰かがモナドは難しいというと苦手意識が形成され苦手になってしまう
0100972016/02/17(水) 10:06:32.54ID:quIHvTl+
>>98
別で定義してあげる必要があるんですね。
ありがとうございます。
0101デフォルトの名無しさん2016/02/17(水) 10:47:00.22ID:N32mDm+m
モナドって名前を意識する前から色々知ってた奴らは
九合目辺りまで無意識というか意識低いから簡単なんだよ
■ このスレッドは過去ログ倉庫に格納されています