関数型プログラミング言語Haskell Part28 [転載禁止]©5ch.io
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2015/04/10(金) 01:30:32.61ID:KZNYLMbmhaskell.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:KZNYLMbm26) 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:KZNYLMbm19) 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+Xq0006デフォルトの名無しさん
2015/04/11(土) 10:52:03.73ID:PPihF5HG0007デフォルトの名無しさん
2015/07/14(火) 07:57:08.65ID:dR+Nasf+前スレ(Part28)のレス数が1000になってから利用してください。
以下、テンプレ。
0008デフォルトの名無しさん
2015/07/14(火) 07:57:56.76ID:dR+Nasf+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+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.net
2015/07/14(火) 19:51:26.71ID:V8pOZFXsKeyword = "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:70iQnSqBhttp://www.amazon.co.jp/dp/B00TN97BE2
0014デフォルトの名無しさん
2015/07/16(木) 18:27:15.12ID:gee943jxどさくさ宣伝乙。 帰って、どうぞ
0015デフォルトの名無しさん
2015/07/18(土) 01:57:00.72ID:wQVOOXndこっちよりレス伸びてるけども
0016デフォルトの名無しさん
2015/07/18(土) 20:49:05.37ID:8uXNBMZf0017デフォルトの名無しさん
2015/11/10(火) 07:03:48.22ID:RJS+i6XXfoo 1 = 〜
foo x = 〜
って書くのと
foo x
| x == 0 = 〜
| x == 1 = 〜
| otherwise = 〜
って書くのと
オススメな記述ってどっち?
使い分け方のヒントみたいなのあったりする?
それとも完全に好みの問題?
0018デフォルトの名無しさん
2015/11/10(火) 07:24:21.46ID:tbHGFOTY0019デフォルトの名無しさん
2015/11/10(火) 15:09:26.37ID:+Ply0AReなるべく狭い意味の機能を使った方が意図を特定しやすい。
よって、可能ならば前者の方が望ましいと思う。
でもまあ、そんなに厳密なもんじゃないよ。
それを原則としつつも見易いと思う方を柔軟に選ぶしかないんじゃないか。
0020デフォルトの名無しさん
2015/11/10(火) 19:45:40.64ID:RJS+i6XXd
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で{}の中身がない場合ってどういう時に使うものなのでしょうか
0023デフォルトの名無しさん
2015/11/30(月) 08:16:05.14ID:yyLLqUKUデュエル・マスターズ的な非電源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:Uc9cUKER0026デフォルトの名無しさん
2016/01/12(火) 20:04:56.64ID:uxklQDbX0027デフォルトの名無しさん
2016/01/12(火) 20:25:39.88ID:3+klCnXk0028デフォルトの名無しさん
2016/01/31(日) 13:36:39.77ID:AKL8QDPC具体的な話は聞いたことがない
どのへんがどうダメなのか解る人いますか?
俺は擁護も批判もできないレベルなんでなんも言えないw
0029デフォルトの名無しさん
2016/01/31(日) 16:19:13.20ID:gaE4MpDRメニーコア時代には32Kコアプロセッサが普通になる。
そうなるとHaskell以外の選択肢が無いんですよ。
0030デフォルトの名無しさん
2016/01/31(日) 18:20:42.41ID:d3QvGQc6メニーコア,メニーコア,っていうけど haskell の実装がメニーコアにすでに適用している事例はあるの?
個人的には clojure の STM のような,具体的なカラクリのアイディアがない haskell が並列化に対応できるようになるとは思えない
haskell のこの方面での将来性は,ない
0031デフォルトの名無しさん
2016/01/31(日) 18:32:52.82ID:4aqfDNg20032デフォルトの名無しさん
2016/01/31(日) 19:23:48.50ID:F9NTpP4rキチガイのせいで馬鹿まで寄ってきたな haskellにもある物持ち出して、優位だと語るなんて笑える
haskellが遅延評価なのも忘れたのか?
どうせその調子だとclojureもまともに触ってないんだろ?
0033デフォルトの名無しさん
2016/01/31(日) 21:23:02.45ID:9irTPz61>個人的には clojure の STM のような
STMとか普通にあるんだけど……
0034デフォルトの名無しさん
2016/01/31(日) 21:25:39.77ID:9irTPz61>haskell の実装がメニーコアにすでに適用している事例はあるの?
「適用 apply」と「適応 adapt」を間違える日本語の不自由な子が増えてるよね
それにしてもまだ日本語がおかしいけど
それはともかく、並列性のボトルネックがないソフトェアならGHCでわりと
素直にスケールするのも知らんのかしら
0035デフォルトの名無しさん
2016/01/31(日) 21:45:08.39ID:zyH0pBzu0036デフォルトの名無しさん
2016/02/04(木) 13:53:14.89ID:UJ/Pq+8G>>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+l7A0039デフォルトの名無しさん
2016/02/05(金) 20:24:20.78ID:xfnoaCBb極端だな
0040デフォルトの名無しさん
2016/02/05(金) 20:24:21.22ID:/MC0YSt90041デフォルトの名無しさん
2016/02/05(金) 21:00:17.25ID:CS7E051N欠点と言っても、本質とは関係ないからな。
Haskellに討ち滅ぼされた雑魚言語に絡まれるとかその程度。
唯一完成された言語だし、Haskell以外はすべて淘汰される。
0042デフォルトの名無しさん
2016/02/06(土) 00:34:56.96ID:AtWB76qi0043デフォルトの名無しさん
2016/02/06(土) 00:55:24.18ID:bnndf23C0044デフォルトの名無しさん
2016/02/06(土) 06:38:48.88ID:qHjkJ1/w0045デフォルトの名無しさん
2016/02/06(土) 12:06:40.45ID:wrmjFiB3逆に「だんまり」といって相手を煽るのは「無視するな」ということ
0046デフォルトの名無しさん
2016/02/06(土) 14:20:26.67ID:wrmjFiB3ignore' _ = return () -- 全て無視
0047デフォルトの名無しさん
2016/02/06(土) 18:58:32.08ID:4z0/BkxB0048デフォルトの名無しさん
2016/02/07(日) 08:09:04.81ID:cU6bDpiy0049デフォルトの名無しさん
2016/02/07(日) 09:44:32.12ID:fEVoSTHz0050デフォルトの名無しさん
2016/02/07(日) 10:09:33.89ID:/7Z+PXONHaskell のライブラリってなぜか知らんがキャメル形式で統一されてるよね。
プログラムを組むときは形式を統一すべきと言われる。
いろんな形式が混ざってると吐き気を催す人もいるらしい。
俺もやっぱり良い気はしない。
そこで、自分でプログラムを組むときは、
ライブラリの公開されている識別子を全てスネーク形式にしたラッパーを作り、
それを 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個人的にはキャメルの方が好きだが
そもそも簡素でわかりやすい一語の識別子を使えばどっちもいらない
0054デフォルトの名無しさん
2016/02/07(日) 18:19:17.65ID:yu9AA7dRもともとOS依存に否定的だった場合は面子を保つために敢えて大文字を使うとか
0055デフォルトの名無しさん
2016/02/07(日) 23:08:45.47ID:fEVoSTHz0056デフォルトの名無しさん
2016/02/08(月) 00:14:06.12ID:K7vwFuB3その理屈はおかしい
ファイル名が case-insensitive だったところで
その言語(の識別子)が case-sensitive なら関係がない
0057デフォルトの名無しさん
2016/02/08(月) 11:56:14.99ID:+KLQd2tlファイル名と直接関係あるのはモジュール
ただしモジュールと型が癒着していたり型と関数が癒着していたりすると影響が広がる
0058デフォルトの名無しさん
2016/02/09(火) 20:08:55.36ID:T+WeLdAUじゃあ前バージョンのHaskellコンパイラをメイクするには前々バージョンのHaskellコンパイラが要るんですよね?
ということは、GCCからArmで動くHaskellコンパイラをメイクするには、C/C++で書かれた最後のバージョンのソースコードを探してきてそこから順番にメイクで辿って行かなきゃならないんですか?
0059デフォルトの名無しさん
2016/02/09(火) 21:07:41.59ID:p2mta7H70060デフォルトの名無しさん
2016/02/09(火) 22:01:01.78ID:T+WeLdAU0061デフォルトの名無しさん
2016/02/09(火) 22:06:42.84ID:T/GcQe87data 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+PYUzVTdata 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:Jpj0GH1T0065デフォルトの名無しさん
2016/02/10(水) 16:17:31.06ID:v+PYUzVT0066デフォルトの名無しさん
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:Jpj0GH1T7.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+PYUzVTpublic変数はもうどうでもいい
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理解できれば死んでもいい。
0070デフォルトの名無しさん
2016/02/11(木) 01:23:45.78ID:WmGIDCmu0071デフォルトの名無しさん
2016/02/11(木) 01:55:29.55ID:s0UUbhTE抽象的構造が漠然と理解できるようになる。話はそれからだ。
Functorを理解してApplicativeを理解すればMonadはすぐそこ。
MonadにできてApplicativeに出来ない事例をIOやListで書いてみれば、
Monadの意味もわかる。
0072デフォルトの名無しさん
2016/02/11(木) 05:05:08.71ID:UHi7AMAe0073デフォルトの名無しさん
2016/02/11(木) 09:54:22.24ID:mcDetqD3入門書や解説書のモナドの章を「自分の言葉で書ける」ようになり、
なおかつ、読者が「なるほど」と言ってくれれば、自分は理解できてるなと安心できる。
0074デフォルトの名無しさん
2016/02/11(木) 10:39:05.18ID:2qMTPVuS迷惑だわ。
0075デフォルトの名無しさん
2016/02/11(木) 10:41:07.97ID:RWcQtaICIOは毎回結果が異なるので一回で終わらないがそれ以外はサンクと同じ物だよね
モナドは何の変哲もない型クラスだね
0076デフォルトの名無しさん
2016/02/11(木) 10:48:22.39ID:4PPMlVIJただ表象するのみ
0077デフォルトの名無しさん
2016/02/11(木) 15:22:54.23ID:Ijn2TjOB0078デフォルトの名無しさん
2016/02/11(木) 15:33:12.95ID:g2tgmyMx違う
0079デフォルトの名無しさん
2016/02/11(木) 18:41:59.24ID:RWcQtaICこの状況でみんな善人ということはありえない
0080デフォルトの名無しさん
2016/02/11(木) 19:33:58.12ID:s0UUbhTE0081デフォルトの名無しさん
2016/02/11(木) 20:01:48.02ID:ZGIjujTB0082デフォルトの名無しさん
2016/02/11(木) 20:19:46.17ID:g2tgmyMx0083デフォルトの名無しさん
2016/02/11(木) 22:32:37.77ID:h5Y5qyZF0084デフォルトの名無しさん
2016/02/12(金) 22:34:57.40ID:Az+dNpcd0085デフォルトの名無しさん
2016/02/13(土) 18:30:17.93ID:zeyk14CL0086デフォルトの名無しさん
2016/02/13(土) 19:25:49.95ID:tYDOUXsUカジダー! ワー
0087デフォルトの名無しさん
2016/02/13(土) 19:50:06.18ID:/Hz5ypwN0088デフォルトの名無しさん
2016/02/14(日) 12:00:16.26ID:iEUC0Mwt問題提起する前に解決しましょうって言われたらどう思いますか
0089デフォルトの名無しさん
2016/02/14(日) 12:50:37.93ID:T34rz49+だったら、本人たちには適切に問題提起をする能力がないのだから、
あんたが代わりに翻訳して、普通の人に分かるように問題提起してくれよ。
でなきゃ、ただのノイズとして見逃される。
0090デフォルトの名無しさん
2016/02/14(日) 13:37:03.55ID:iEUC0Mwtそれを誰に言いたいですか
言いたい相手はもう見つかっていますね
見逃されるというのは嘘ですね
0091デフォルトの名無しさん
2016/02/14(日) 13:46:14.55ID:vmByG/Xl0092デフォルトの名無しさん
2016/02/14(日) 15:13:51.42ID:cqB0Nh3J0093デフォルトの名無しさん
2016/02/14(日) 15:22:10.99ID:cCh+B9qI0094デフォルトの名無しさん
2016/02/14(日) 16:04:41.95ID:XEWxVYXa0095デフォルトの名無しさん
2016/02/14(日) 16:06:28.06ID:XEWxVYXa0096デフォルトの名無しさん
2016/02/14(日) 17:35:47.39ID:cqB0Nh3J0097デフォルトの名無しさん
2016/02/14(日) 22:21:56.57ID:zI7ECB9Oa :: {
b :: Int
}
}
こんな感じで宣言する方法はないのでしょうか?
用途はネストしたJSONへの変換です。
0098デフォルトの名無しさん
2016/02/16(火) 22:19:56.49ID:sJ0P3nVAdata B t = B {b :: t}
data Hoge = Hoge {
hoge :: A (
B Int
)
}
0099デフォルトの名無しさん
2016/02/17(水) 03:41:21.57ID:1UNcQaMi誰かがS字・クランクは難しいと言うと苦手意識が形成され苦手になってしまう
誰かがポインタは難しいというと苦手意識が形成され苦手になってしまう
誰かがモナドは難しいというと苦手意識が形成され苦手になってしまう
010097
2016/02/17(水) 10:06:32.54ID:quIHvTl+別で定義してあげる必要があるんですね。
ありがとうございます。
0101デフォルトの名無しさん
2016/02/17(水) 10:47:00.22ID:N32mDm+m九合目辺りまで無意識というか意識低いから簡単なんだよ
0102デフォルトの名無しさん
2016/02/17(水) 14:43:49.52ID:xZS1HXecゴールしか見ないからスタートラインを弄ることを思いつかない
0103デフォルトの名無しさん
2016/02/17(水) 16:37:41.55ID:+oxsYRhZ0104デフォルトの名無しさん
2016/02/17(水) 20:02:43.23ID:qMJfKGhR定義域 Int の元と終域 String の元とを対応づける関数
g :: Int -> Int -> [Int]
定義域 Int の元と終域 Int -> Int の元とを対応づける関数
と考えることに異を挟む人は少ないと思う。
(正確には、終域にはボトムも元として含むだろうが)
では、
h :: String
定義域は空集合と考えても問題ないだろうか。
0105デフォルトの名無しさん
2016/02/17(水) 20:04:22.89ID:qMJfKGhR訂正
g :: Int -> Int -> [Int]
定義域 Int の元と終域 Int -> [Int] の元とを対応づける関数
0106デフォルトの名無しさん
2016/02/17(水) 21:43:32.27ID:qMJfKGhRこの場合の定義域は要素がただ一つだけの何かだろう。
それが省略されているだけだ。
そう考えればつじつまが合う。
みんなのおかげで自己解決できた。
ありがとう、感謝する。
0107デフォルトの名無しさん
2016/02/17(水) 22:00:25.26ID:/+olwn0P0108デフォルトの名無しさん
2016/02/18(木) 00:15:24.71ID:NoBWmHQbそれがわからないとKleisliやArrowも胡乱になる
0109デフォルトの名無しさん
2016/02/19(金) 22:07:21.69ID:LvuG0cXK0110デフォルトの名無しさん
2016/02/20(土) 20:10:48.47ID:hxPxeUMY0111デフォルトの名無しさん
2016/02/20(土) 20:45:29.97ID:pvUNCsFm0112デフォルトの名無しさん
2016/02/20(土) 21:02:23.09ID:kXmEjnOB0113デフォルトの名無しさん
2016/02/20(土) 21:17:04.18ID:Xi17WzDF0114デフォルトの名無しさん
2016/02/20(土) 21:50:09.69ID:JIrwRLWRどれかを使うと別のモノを使わなくなるという仕事をしてる人は、どれをやらなくても困らないからプログラミングやめればいいとおもう
0115デフォルトの名無しさん
2016/02/20(土) 22:06:23.94ID:5dzdENdKJavaScriptは応用範囲はHaskellと競合はしないけど、こんなクソ言語が書けるかぁっ!
となってマトモなaltJSを探しに旅立ってしまうのでわりとHaskellと排他的な気がする
HaskellからElixirに逃げ出したと称する>>112がまったく意味不明なのはその通り
0116デフォルトの名無しさん
2016/02/20(土) 22:59:49.53ID:WjN+AF9Tそれがjs
0117デフォルトの名無しさん
2016/02/20(土) 23:57:13.09ID:Xi17WzDF0118デフォルトの名無しさん
2016/02/20(土) 23:58:28.64ID:Xi17WzDFそれは素人考え。
Haskellさえあれば他は要らない。
玄人ならこう考える。
0119デフォルトの名無しさん
2016/02/21(日) 00:36:20.13ID:60OzU5Vmhaskell使ってる人はfontもこだわりが?
0120デフォルトの名無しさん
2016/02/21(日) 01:20:54.41ID:UfOP8/7O0121デフォルトの名無しさん
2016/02/21(日) 03:44:54.50ID:Ppx8wqFy0122デフォルトの名無しさん
2016/02/21(日) 16:03:45.58ID:nQxbvp7F0123デフォルトの名無しさん
2016/02/23(火) 22:59:37.57ID:IWj7+wz0[0, 1, 2, 3]を[[0],[0,1],[0,1,2]にしてくれる
便利な関数があったのですが
fn :: [a] -> [[a]]
fn [] = []
fn (x:xs) = [x] : map f (fn xs)
where f lt = x : lt
リストにmapを掛けてconsしてまた再帰呼出など
初心者の自分には仕組みが今一つ掴めないです。
もっと簡単に理解できて同様の事ができる関数は
ありえますでしょうか?
0124デフォルトの名無しさん
2016/02/24(水) 01:18:41.86ID:eE6/28/Iこれでどうでしょう
(\y -> map (\x -> take x y ) [1..(length y)]) [0,1,2,3]
0125デフォルトの名無しさん
2016/02/24(水) 01:37:17.19ID:b4ze5Byrありがとうございます。
試してみます。
0126デフォルトの名無しさん
2016/02/24(水) 02:03:00.26ID:TK8B6JFMfn :: [a] -> [[a]]
fn xs = scanl1 (++) $ map cons xs
where cons x = [x]
0127デフォルトの名無しさん
2016/02/24(水) 02:04:52.29ID:+WgOrOxzfn [] = [[]]
fn (x:xs) = map (x:) $ [] : fn xs
で書ける。要するに
fn [0, 1, 2, 3] = [ [0], [0,1], [0,1,2], [0,1,2,3] ]
を
fn [1, 2, 3] = [ [1], [1,2], [1,2,3] ]
から作る方法がわかればこの関数は素直な再帰で書けるわけ。
で、それには後者の頭に空リストを足して [ [ ], [1], [1,2], [1,2,3] ] を作り、
これの各要素の頭に 0 をくっつければいいわけだ。
この操作を一般的に書けば上の定義の2行めになる。
0128デフォルトの名無しさん
2016/02/24(水) 02:15:22.42ID:+WgOrOxz>>123のコードは
fn [1, 2, 3] = [ [1], [1,2], [1,2,3] ]
に対して、まず各要素の頭に0をくっつけて
[ [0,1], [0,1,2], [0,1,2,3] ]
を作り、最後にこのリストの頭に[0]をくっつけて
[ [0], [0,1], [0,1,2], [0,1,2,3] ]
を得ている。それを一般的に書いただけ。
0129デフォルトの名無しさん
2016/02/24(水) 04:35:56.62ID:dFLtbL+cmain = print . drop 1 . inits $ [0, 1, 2, 3]
[[0],[0,1],[0,1,2],[0,1,2,3]]
0130デフォルトの名無しさん
2016/02/24(水) 09:33:53.57ID:6CE9DY8Khttp://lpaste.net/153250
0131123
2016/02/24(水) 21:51:07.63ID:b4ze5Byr>>126
>>127
>>128
>>129
どうもありがとうございます。
学習の参考にさせて頂きます。
0132デフォルトの名無しさん
2016/02/25(木) 16:51:57.95ID:Tf/tuDHy0133デフォルトの名無しさん
2016/02/26(金) 03:11:34.56ID:xtcDhLHfありがとうございます
0134デフォルトの名無しさん
2016/02/28(日) 14:49:27.01ID:VpGcPiMB0135デフォルトの名無しさん
2016/02/28(日) 15:08:47.78ID:VpGcPiMBcodepad.org/K6saiwGy
parsecで日本語文字列を出力したいのですがコードを実行すると
index \12411\12370\12405\12364
のように数値で日本語文字列が出力されてしまいます
これはどういう風にすればうまくいくのでしょうか
グーグルと格闘していますがなかなか解決できません
0136デフォルトの名無しさん
2016/02/28(日) 21:42:18.79ID:wqm/iHx2show val の show を削除する
valは そもそもUTF-8を格納した String なのにそれに show を使ったせいで
UTF-8 リテラル文字列になってしまっている
putStrLn "index ¥12411¥12370¥12405¥12364"
と
putStrLn $ show "index ¥12411¥12370¥12405¥12364"
は違うということ
0137デフォルトの名無しさん
2016/02/29(月) 20:32:33.21ID:KkDNedMOpersist で Day 型のカラムを作ったのですが、
esqueleto の groupBy 関数を使って月ごとにグループ分けすることは可能でしょぅか。
単純に groupBy に Day 型のカラムを渡すと日ごとにグループ分けされてしまいます。
0138デフォルトの名無しさん
2016/02/29(月) 23:26:11.62ID:q7VWC7Ji質問なのですが、
recQuery :: BS.ByteString -> String -> IO BS.ByteString
parseDnsMessage :: BG.BitGet DnsMessage
resolveName :: [Word8] -> [Word8] -> BS.ByteString -> String
resolveName qname name bstr = do
let newbstr = BSL.toStrict $ replace (BS.pack qname) (BS.pack name) bstr
retbstr <- recQuery newbstr rootServer4
let msg = BG.runBitGet retbstr parseDnsMessage
case msg of
Right m -> (intercalate
0139デフォルトの名無しさん
2016/02/29(月) 23:28:09.56ID:q7VWC7JiCouldn't match expected type ‘[BSI.ByteString]’
with actual type ‘IO BSI.ByteString’
In a stmt of a 'do' block:
retbstr <- recQuery newbstr (head rootServers4)
In the expression:
do { let newbstr
= BSL.toStrict $ replace (BS.pack qname) (BS.pack name) bstr;
retbstr <- recQuery newbstr (head rootServers4);
let msg = BG.runBitGet retbstr parseDnsMessage;
case msg of {
Right m
-> (intercalate "." $ map show (rdata $ head $ answer $ m)) } }
このような場合どのように書くのが適切なのでしょうか?
よろしくお願いします。
0140デフォルトの名無しさん
2016/02/29(月) 23:28:12.35ID:q7VWC7JiCouldn't match expected type ‘[BSI.ByteString]’
with actual type ‘IO BSI.ByteString’
In a stmt of a 'do' block:
retbstr <- recQuery newbstr (head rootServers4)
In the expression:
do { let newbstr
= BSL.toStrict $ replace (BS.pack qname) (BS.pack name) bstr;
retbstr <- recQuery newbstr (head rootServers4);
let msg = BG.runBitGet retbstr parseDnsMessage;
case msg of {
Right m
-> (intercalate "." $ map show (rdata $ head $ answer $ m)) } }
このような場合どのように書くのが適切なのでしょうか?
よろしくお願いします。
0141デフォルトの名無しさん
2016/03/01(火) 12:55:17.23ID:HGgkTTuu0142デフォルトの名無しさん
2016/03/03(木) 13:06:37.65ID:b3dAQAykMonadが理解できないってのは健全で冷静な感覚だ。
単なる型構成子の一つなのになぜあんなに誇大宣伝されるのかというのが理解できないんだろう。
Monadってそんなに大したものじゃないので、Functorと同じくらいに分かるんならそれで正しいよ
0143デフォルトの名無しさん
2016/03/03(木) 20:02:18.60ID:4mtdR8tdそんな軽々しく語れるものじゃない。
0144デフォルトの名無しさん
2016/03/03(木) 21:05:52.96ID:hbEIqzuIHaskellの重要な型は a -> b と IO a なんだけど
こいつらデータコンストラクタを宣伝できないから
型コンストラクタを誇大宣伝するしかない
0145デフォルトの名無しさん
2016/03/03(木) 21:45:05.55ID:b3dAQAyk誇大広告の域を超えてるな
君も詐欺に引っかかるタイプだな。早く目を覚ませ
0146デフォルトの名無しさん
2016/03/04(金) 00:47:47.59ID:O42fAfhp0147デフォルトの名無しさん
2016/03/04(金) 08:26:12.96ID:/J2AWB0A0148デフォルトの名無しさん
2016/03/04(金) 18:01:54.91ID:8KmO5X/u0149デフォルトの名無しさん
2016/03/04(金) 21:13:29.44ID:3Y+HzM1E0150デフォルトの名無しさん
2016/03/04(金) 22:28:27.23ID:Rii2sRuh0151デフォルトの名無しさん
2016/03/06(日) 13:15:40.94ID:tSjFkCSl0152デフォルトの名無しさん
2016/03/07(月) 15:47:57.10ID:qBrIq/RY0153デフォルトの名無しさん
2016/03/07(月) 18:16:32.36ID:uqmql4P/0154デフォルトの名無しさん
2016/03/11(金) 22:48:50.97ID:lf/FOxiD導入というのがインストールではなくプログラミングのことなら、
書籍「Developing Web Applications With Haskell and Yesod」がおすすめ。
既にHaskellの基礎が分かってるなら、Chapter3 の冒頭の Hello, World から
手を動かしながら読んでいけばWebアプリの作り方が分かるようになるよ。
英語だけど、殆どのところは平易な言い回したがら、和訳しようなんて思わなければ、
高校生でも意味は読みとれると思う。
(今となっては一部内容が古いかも。MozillaのBrowserIDの例があったり)
0155デフォルトの名無しさん
2016/03/11(金) 23:14:09.63ID:3/HLXc0f0156152
2016/03/16(水) 19:43:32.46ID:5Au1FueU遅レス(´・ω・)スマソですが、ありがとうございます
その本英語でちょっと古いという話があるから、
どうしようか迷ってたけどやってみますかね
0157デフォルトの名無しさん
2016/03/17(木) 23:13:15.15ID:Opt/41wo1:2:[]と[1,2]が一緒で構文糖衣というてな
0158デフォルトの名無しさん
2016/03/18(金) 05:09:50.52ID:bw5Y7I/70159デフォルトの名無しさん
2016/03/18(金) 16:35:22.98ID:SKNZeuAp0160デフォルトの名無しさん
2016/03/19(土) 17:34:27.78ID:W8OFmztnhttps://en.wikipedia.org/wiki/Haskell_%28programming_language%29
0161デフォルトの名無しさん
2016/03/19(土) 17:47:08.94ID:SYQTFOu+0162デフォルトの名無しさん
2016/03/19(土) 17:49:00.51ID:EuGwJiBL0163デフォルトの名無しさん
2016/03/19(土) 18:00:05.02ID:2lKXEDYi0164デフォルトの名無しさん
2016/03/20(日) 00:11:31.81ID:wXobkPts0165デフォルトの名無しさん
2016/03/20(日) 00:31:55.66ID:GdGOCP5U遺伝的アルゴリズムや正規表現とのテキスト処理しようかと思ってるんだけども
0166デフォルトの名無しさん
2016/03/20(日) 00:46:35.50ID:75/94Ydr「堅すぎて」の意味もよくわからんが、
それが「実用に向くか」となんの関係があるんだ
0167デフォルトの名無しさん
2016/03/20(日) 01:06:04.26ID:GdGOCP5U今の所cでcgiを書くかのような凡雑さやくどさを感じてる
リストや配列処理はp系言語より上とは思ったけどその他は面倒そうな印象
ファイル入出力と正規表現でささっと色々出来たら文句ないんだが慣れの問題かね??
0168デフォルトの名無しさん
2016/03/20(日) 01:24:57.01ID:lpAAOCss0169デフォルトの名無しさん
2016/03/20(日) 02:03:43.11ID:RTTkGWUK0170デフォルトの名無しさん
2016/03/20(日) 02:19:41.31ID:GdGOCP5Uまあそう言うな趣味だから用途は理屈付けだからあんま意味ないわ
最低限事が出来るならそれていいべ
今ちなみに今はすごハス読みながらガードを覚えた所
0171デフォルトの名無しさん
2016/03/20(日) 03:49:21.37ID:Q2v2u5ZM0172デフォルトの名無しさん
2016/03/20(日) 05:16:25.92ID:2OeezbvBほんとにちょっとした文字列処理なら正規表現でもいいけど
ある程度の規模ならパーサコンビネータ(Parsecとか)覚えると
可読性やメンテ性、あとHaskell使いこなしてる感が上がって楽しい
ファイルの読み書きはとりあえずwithFile関数覚えておけばいいんじゃないですかね
0173デフォルトの名無しさん
2016/03/20(日) 06:28:19.33ID:yN6fzEfaなぜか使いにくい印象持たれてるのはあるな
ただ慣れないと細かい事に文句言いまくるクソ言語にしか見えないのも確かだ
一定以上慣れてやっと、エンバグの減少と共に恩恵の効き目が見えて来る
0174デフォルトの名無しさん
2016/03/20(日) 06:54:21.91ID:75/94Ydr> 今の所cでcgiを書くかのような凡雑さやくどさを感じてる
それが「実用に向くか」の中身ならまさに「スクリプト言語でも使えば?」としか
CがCGIに向いてないから「実用に向かない」というなら
Haskellも同じように「実用に向かない」んじゃね
…つうか「凡雑さ」ってなに??
0175デフォルトの名無しさん
2016/03/20(日) 06:57:00.83ID:75/94Ydr「ぼん」が「凡」になったのかな(実用向きの推理)
0176デフォルトの名無しさん
2016/03/20(日) 08:50:29.01ID:b1lneXIIってことでしょ
0177デフォルトの名無しさん
2016/03/20(日) 10:12:07.36ID:QzGGeNArHaskellで書いたコード
それぞれ三ヶ月後に見なおして戦意を保てるのはどっち?
0178デフォルトの名無しさん
2016/03/20(日) 10:40:39.85ID:yN6fzEfa当然戦意ならPerlのが保てるだろう
矛先の向く先は別だが
0179デフォルトの名無しさん
2016/03/20(日) 11:05:04.88ID:bCzJEDSh0180デフォルトの名無しさん
2016/03/20(日) 11:23:11.57ID:GdGOCP5U>>177の様なこの辺の感覚がどうも分からんのよなぁ
自分cとperl出来ないけど多分cとperlはやったらやり易いか他と比べて"煩雑"か分かるとは思うんだがhaskellは分からないんだよな
0181デフォルトの名無しさん
2016/03/20(日) 11:40:10.28ID:uW1sojJd普段はほとんど書かないくせにたまに珍しく書いたコードは忘れない
他人のコードも読んで覚えているので自分のコードを忘れても普通に読める
0182デフォルトの名無しさん
2016/03/20(日) 13:41:30.29ID:XXr7OH0e0183デフォルトの名無しさん
2016/03/20(日) 14:18:15.45ID:uW1sojJd0184デフォルトの名無しさん
2016/03/20(日) 19:23:53.48ID:F6EQ+GjV0185デフォルトの名無しさん
2016/03/20(日) 19:49:59.20ID:yN6fzEfaまず任意の引数を取れる
そしてカリー化も部分適用もできる、というかカリー化がデフォ
0186デフォルトの名無しさん
2016/03/20(日) 21:11:55.58ID:uW1sojJd関数 a -> b が2つ以上の引数を取る可能性≒リスト x : xs の長さが2以上になる可能性
0187デフォルトの名無しさん
2016/03/20(日) 21:12:04.55ID:yCyuHG/Eカリー化されているからこそ部分適用が出来る気がするが
2つ以上の引数を同時に与えたければ、tupleなりuncurryを使えばよい
0188デフォルトの名無しさん
2016/03/20(日) 21:24:27.87ID:RHLJPn4C読んでる本にhaskellはデフォで入ってるmaxやらsuccやらの関数は実はカリー化、部分適応されてて全部引数は一つと書いてたけど
逆に一つでしか出来ないという意味だったことにお宅のレスを見て気付いたありがとう
0189デフォルトの名無しさん
2016/03/20(日) 22:15:16.97ID:75/94Ydr○「適用 application」
×「適応 adaptation」
この間違いがなんでこんなに蔓延ってるのか理解に苦しむ
0190デフォルトの名無しさん
2016/03/20(日) 22:50:07.51ID:F6EQ+GjVadd2 x y = x + y
のとき、
(add1 1)も(add2 1)も部分適用ですか?
そもそもHaskellで引数の個数はどうやって決めるんでしょうか。
0191デフォルトの名無しさん
2016/03/20(日) 23:00:39.89ID:GdGOCP5Uあら?haskellに引数の数自体なくて全てカリー化、2個目以降の引数は全て部分適用に回す
、て話じゃなかたの?
0192デフォルトの名無しさん
2016/03/20(日) 23:17:31.21ID:uW1sojJd0193デフォルトの名無しさん
2016/03/20(日) 23:52:47.28ID:75/94Ydradd2のような関数定義はadd1のシンタクス・シュガー
そしてどちらでも引数の個数は常に1だ
add関数が「2引数」の関数だと言いたいときのような
普通の意味での「引数の個数」は、型の中に関数型構築子(->)が
何個あるかを数えれば(少なくとも直感的には)よい
部分適用(に見えるもの)の特殊例――第1引数に対する部分適用――が
カリー化されていることによって容易に記述できるという話であって、
部分適用の実現にカリー化を使う必要があるわけではないし、
第2引数(に見えるもの)に対する部分適用はカリー化とは関係がない
Haskellなら演算子に限っては(* 2)のように、第2引数(に見えるもの)に対する
部分適用の構文があるわけだけども
0194デフォルトの名無しさん
2016/03/20(日) 23:53:27.24ID:rJQ1OYnP引数を一個取って、『引数一個取る関数』を返せば、それをさらにn-1回繰り返してn個の引数を取る関数を実現できるからね
0195デフォルトの名無しさん
2016/03/21(月) 00:12:24.62ID:W47zDOKQ0196デフォルトの名無しさん
2016/03/21(月) 00:20:07.72ID:+Zc9mgUl0197デフォルトの名無しさん
2016/03/21(月) 00:26:29.46ID:mEjk8CaC0198デフォルトの名無しさん
2016/03/21(月) 02:09:27.30ID:mqJW4NLD最初から1引数関数に1引数を渡しているようにしか見えないんだが
0199デフォルトの名無しさん
2016/03/21(月) 02:10:12.72ID:W47zDOKQそれってどの部分に応用できるの?
>>197
ただの部分適用だと思ってても文法は変わらなくない?
0200デフォルトの名無しさん
2016/03/21(月) 08:13:00.45ID:Z1UuXowGそこまで行くと最早言語仕様の話になるような。。
他の言語でいう連想配列あれば配列いらなくね的な
俺も初学者だけどhaskellは 文法しっかり覚えた方がいいぞx:xsとか構文糖衣で言い回しを変えてる所が沢山あってむしろお宅が悩んでる所はそこよ
0201デフォルトの名無しさん
2016/03/21(月) 08:57:12.63ID:XJIk5Rboそれは違う
「その部分」「どの部分」と言ってるからもっとピンポイントな答えが期待されてる
あの部分だな
0202デフォルトの名無しさん
2016/03/21(月) 15:57:08.54ID:em5aFOqL0203デフォルトの名無しさん
2016/03/21(月) 15:59:40.77ID:em5aFOqL0204デフォルトの名無しさん
2016/03/21(月) 21:30:37.79ID:W47zDOKQ構文糖という意味じゃなくて、Coreを見ても変わらないから本当にわからないんだって
0205デフォルトの名無しさん
2016/03/22(火) 00:33:33.60ID:oW40IkQfこれは型を見るとarityが2だけど値を見るとarityが1のような気がする
0206デフォルトの名無しさん
2016/03/22(火) 14:51:30.84ID:mpnhn3sE関数を一つの型に抽象化できると、論文やテキストを書くときに楽
0207デフォルトの名無しさん
2016/03/22(火) 19:21:14.33ID:oW40IkQf型クラスがなかった古い言語を無視して、現在のHaskellが何の得になるかという議論は
砂上の楼閣っぽい
0208デフォルトの名無しさん
2016/03/22(火) 20:34:04.20ID:mpnhn3sE言語表現そのもの
Haskellに何の得もないという意見は、日本語じゃプログラミングできないという意見と同レベル
0209デフォルトの名無しさん
2016/03/23(水) 22:02:39.24ID:r6iJqmyn0210デフォルトの名無しさん
2016/03/24(木) 17:36:19.24ID:xXG4RPew0211デフォルトの名無しさん
2016/03/24(木) 21:27:30.95ID:J6WmYFYybrew install haskell-stack
stack setup
で何かいけない理由があるのか?
0212デフォルトの名無しさん
2016/03/24(木) 22:50:37.70ID:gVM1g8dJ0213デフォルトの名無しさん
2016/03/25(金) 22:14:17.18ID:2hwI0Ray0214デフォルトの名無しさん
2016/03/25(金) 22:29:21.66ID:CJ0htTKH0215デフォルトの名無しさん
2016/03/25(金) 22:35:31.85ID:2hwI0Ray0216デフォルトの名無しさん
2016/03/25(金) 22:43:56.48ID:CnirOUU50217デフォルトの名無しさん
2016/03/25(金) 22:49:02.23ID:2hwI0Raybrew でやるとライブラリが入ってないって言われてそのつど入れたりimport文を書き直すハメになる
オフラインのスタンドアロンで使ってるから非常に困る
0218デフォルトの名無しさん
2016/03/25(金) 22:50:18.38ID:8xyGagLX0219デフォルトの名無しさん
2016/03/26(土) 02:10:19.19ID:kRgMl8e0だからなんでstack使わないの?
0220デフォルトの名無しさん
2016/03/26(土) 06:11:36.95ID:xgz3RPza0221デフォルトの名無しさん
2016/03/26(土) 10:52:26.15ID:7O7WN3J8自分で作ったコードが読めないんじゃなくて自分で意図してない依存関係が読めないんだよな
0222デフォルトの名無しさん
2016/03/27(日) 20:56:30.01ID:0fEHBexOel capitan の前はHaskellPlatform だけで完結してたプログラムなので、誰かなんとかしてほしい
0223デフォルトの名無しさん
2016/03/27(日) 21:15:53.61ID:qne5z7mnLeft 側の値に関数を適用するものは標準ライブラリにある?
readEither のエラーメッセージをもっと分かりやすいものに変えたい。
無ければ作るが、標準ライブラリにあるのなら、できるだけそれを使いたい。
0224デフォルトの名無しさん
2016/03/27(日) 22:56:01.91ID:0Jfntbhy0225デフォルトの名無しさん
2016/03/27(日) 23:08:58.39ID:0rC/ofPw詳しくはわからないが、El CapitanのセキュリティのしくみにHaskellPlatformが合わないらしい。
で、パッチを当てられたバージョンが配られてるっぽい。
http://stackoverflow.com/questions/32920452/how-to-run-haskell-on-osx-el-capitan
0226デフォルトの名無しさん
2016/03/27(日) 23:14:31.09ID:0Jfntbhyきちんと追随してないコードが早々にobsoleteになるのは諦めるしかない
0227デフォルトの名無しさん
2016/03/27(日) 23:14:35.18ID:0rC/ofPwBifunctorっていうのを見つけたよ
https://hackage.haskell.org/package/base-4.8.2.0/docs/Data-Bifunctor.html
0228デフォルトの名無しさん
2016/03/27(日) 23:29:56.66ID:0Jfntbhyあ、Base-4.8.0からBifunctor入ったんだ。知らなかった。
0229デフォルトの名無しさん
2016/03/28(月) 00:40:49.84ID:nQ5EzqqT0230デフォルトの名無しさん
2016/03/28(月) 00:57:36.40ID:nJiPkWp90231デフォルトの名無しさん
2016/03/28(月) 01:32:55.18ID:qcb2KDJp0232デフォルトの名無しさん
2016/03/28(月) 21:14:55.91ID:Lm1cq8wvBiFunctorを使うよ
0233デフォルトの名無しさん
2016/03/28(月) 21:40:11.75ID:iKsxfZekhttps://ask.fm/tanakh184/answers/135945765779
0234デフォルトの名無しさん
2016/03/28(月) 22:10:45.31ID:PPQPikPw0235デフォルトの名無しさん
2016/03/28(月) 22:24:37.12ID:eoKtZ9pp0236デフォルトの名無しさん
2016/03/28(月) 23:01:56.57ID:PPQPikPw0237デフォルトの名無しさん
2016/03/29(火) 07:10:25.38ID:YQCa1g4df +++ g = arr (bimap f g)
0238デフォルトの名無しさん
2016/03/29(火) 11:22:43.84ID:YQCa1g4d(arr f) *** (arr g) = arr (bimap f g)
(arr f) +++ (arr g) = arr (bimap f g)
0239デフォルトの名無しさん
2016/03/29(火) 20:58:59.61ID:WTA2j3Vpqt [] = []
qt (x:xs)=
let
s=[a|a<-xs,a<x]
b=[a|a<-xs,a>=x]
in qt s++[x]++qt b
main = do
print (qt [9,5,4,4,1])
これで[1,4,4,5,9]となって、b=[a|a<-xs,a>x]とすると
[1,4,5,9]となることに感動した
0240デフォルトの名無しさん
2016/03/30(水) 06:07:46.47ID:2BObmFiJこの人のツイッターめっちゃツイートしすぎじゃね??無職なの?ボットなの?
0241デフォルトの名無しさん
2016/03/30(水) 06:30:20.50ID:275vy7J80242デフォルトの名無しさん
2016/03/30(水) 13:21:10.20ID:Spu236HU0243デフォルトの名無しさん
2016/03/30(水) 14:14:52.38ID:qbKmn6Oyスーパーエンジニア()やで。お前の持ってるHaskell本の翻訳を手がけてる可能性もあるで
0244デフォルトの名無しさん
2016/04/01(金) 23:01:10.98ID:RonLnaIyc01 []=[]
c01 (x:xs)
| x=='?' = []
|otherwise =x:c01 xs
c02::String->[String]
c02 []=[]
c02 x=[_c01]
where
_c01=c01 x
main = do
print (c02 "213?46464?698")
言語感覚を掴むために文字列を?区切りの配列化とかやってんだけど
なんか上手くいかない。。後ろの方なんかどうにかスマートに取れんかな?
0245デフォルトの名無しさん
2016/04/01(金) 23:14:48.75ID:PV5EBc/WPrelude Data.List Data.List.Split> splitOn "?" "213?46464?698"
Loading package split-0.2.2 ... linking ... done.
["213","46464","698"]
Prelude Data.List Data.List.Split>
splitOn のソース
splitOn :: Eq a => [a] -> [a] -> [[a]]
splitOn = split . dropDelims . onSublist
0246デフォルトの名無しさん
2016/04/02(土) 00:30:07.50ID:Ev1W2wgksplit = split' [] ""
split' acc buff "" = reverse $ reverse buff :acc
split' acc buff (x:xs)
| x == '?' = split' (reverse buff :acc) "" xs
| otherwise = split' acc (x:buff) xs
main = print $ split "213?46464?698"
こんなもんだろ。既に区切った語のリストをaccに蓄積して
今読んでる途中の語はbuffに蓄積してやる(適宜reverseで順番を直す)
0247デフォルトの名無しさん
2016/04/02(土) 00:45:02.18ID:Ev1W2wgksplit "" = [""]
split (x:xs)
| x == '?' = "" :split xs
| otherwise = (x:hd):tl
where (hd:tl) = split xs
main = print $ split "213?46464?698"
蓄積引数を使って末尾再帰にするか
こちらにするかはまあ好きにしたらいいと思う。
0248デフォルトの名無しさん
2016/04/02(土) 01:38:17.07ID:Xzav67mJhttp://ideone.com/vh3Ovj
splitQ :: String -> [String]
splitQ s = unko id id s where
unko c1 c2 [] = c2 $ c1' : []
where c1' = c1 []
unko c1 c2 (x:xs)
| x == '?' = unko id (c2 . (c1 [] :)) xs
| otherwise = unko (c1 . (x :)) c2 xs
main = print $ splitQ "213?46464?698"
0249デフォルトの名無しさん
2016/04/02(土) 02:08:57.45ID:Xzav67mJmain = print $ take 10 $ splitQ $ cycle "213?46464?698?"
http://ideone.com/aKJZ7v
0250デフォルトの名無しさん
2016/04/02(土) 03:52:31.86ID:c4u50AAG0251デフォルトの名無しさん
2016/04/02(土) 10:40:52.55ID:HRtXuUOop = (/='?');
t xs = takeWhile p xs;
d xs = drop 1 $ dropWhile p xs
} in map t $ takeWhile (not . null) $ iterate d
0252デフォルトの名無しさん
2016/04/02(土) 10:44:33.90ID:HRtXuUOop = (/='?');
t xs = takeWhile p xs;
d xs = drop 1 $ dropWhile p xs
} in \ str -> map t $ takeWhile (not . null) $ iterate d str
0253デフォルトの名無しさん
2016/04/02(土) 14:20:52.45ID:Ev1W2wgk無限リスト上で末尾再帰したらそりゃ戻ってこないよw
0254デフォルトの名無しさん
2016/04/03(日) 00:11:50.27ID:YJ1NbmGD意味的には二重ループだがソースを見たら入れ子になってないパターンとかgotoに似てる
0255デフォルトの名無しさん
2016/04/03(日) 00:35:09.88ID:I1bXI3bS0256デフォルトの名無しさん
2016/04/03(日) 00:47:31.60ID:Zu/8k3HN0257デフォルトの名無しさん
2016/04/03(日) 01:58:17.79ID:enKsHibE0258デフォルトの名無しさん
2016/04/03(日) 09:55:56.39ID:YJ1NbmGD0259デフォルトの名無しさん
2016/04/03(日) 16:01:20.18ID:n4lb76fMリバースだらけで中々読むのに時間がかかった、、++はいかんのか、、
0260デフォルトの名無しさん
2016/04/03(日) 16:20:55.79ID:GDeNTkfEよく分からないけど、splitQが正格か非正格かという問題と絡むのだろうか
0261デフォルトの名無しさん
2016/04/03(日) 16:50:27.45ID:enKsHibE再帰でリストの後ろに(++)するとO(n^2)かかるので
頭に(:)していって後でreverseするのが定跡
定跡なので慣れれば読みにくくもなくなる
0262デフォルトの名無しさん
2016/04/03(日) 16:56:16.50ID:enKsHibEsplit = split' [] ""
split' acc buff "" = reverse . map reverse $ buff:acc
split' acc buff (x:xs)
| x == '?' = split' (buff:acc) "" xs
| otherwise = split' acc (x:buff) xs
main = print $ split "213?46464?698"
reverse する箇所をまとめたこれならもう少し読みやすいかな。
0263デフォルトの名無しさん
2016/04/03(日) 17:04:47.01ID:enKsHibEsplit' acc buff "" = buff:acc
の方がいいかもしれん。まあ殆ど趣味だと思うが。
0264デフォルトの名無しさん
2016/04/03(日) 18:32:19.06ID:YJ1NbmGDもし要素が1個増えるたびにバッファ全体をコピーしたらO(n^2)になるが
それは配列でもリストでも同じだし、(++)だからといってO(n^2)とは限らないよ
0265デフォルトの名無しさん
2016/04/03(日) 18:44:38.19ID:enKsHibEリストの最後尾に要素を付け加える操作はリストを頭から尻まで走査しないとできないのでO(n)
コピーとかそういう問題ではない
0266デフォルトの名無しさん
2016/04/03(日) 18:48:57.61ID:enKsHibE0267デフォルトの名無しさん
2016/04/03(日) 19:02:39.99ID:enKsHibEghci> foldl' (¥x y -> (x++[y])) [0] [1..100000] ― O(n^2)
ghci> reverse $ foldl' (¥x y -> y:x) [0] [1..100000] ― O(n)
0268デフォルトの名無しさん
2016/04/03(日) 22:51:53.90ID:I1bXI3bSプログラミング初心者というか関数型初心者じゃ
>>246を重点的に見てたんだが知らんことが多く246にその気はなかったんだろうが個人的にだいぶいい情報が詰まってたので感謝
再帰関数内で変数保持のような事をどうすればいいのかを特にわからんかったんだが
部分適応回避の二つの関数噛ませての引数保持やら、reverseの定石やら、地味に(reverse buff :acc)でbuffをaccの前に置いて何故またreverseでbuffを後ろにするんや?という勘違いやら色々ためになった
0269デフォルトの名無しさん
2016/04/03(日) 22:53:32.65ID:I1bXI3bS0270デフォルトの名無しさん
2016/04/03(日) 23:01:07.60ID:YJ1NbmGDfoldrなら速い
一目瞭然とはいわないが、O(n^2)より速いケースもあるだろ
f n = foldr (++) [n] [ [k] | k<-[0..n-1] ]
0271デフォルトの名無しさん
2016/04/04(月) 01:30:08.74ID:csEJBaCm0272デフォルトの名無しさん
2016/04/04(月) 07:27:01.78ID:efe3FcRdfoldrもどちらかといえば個性的
0273デフォルトの名無しさん
2016/04/05(火) 22:42:15.64ID:lFAuwsOe0274デフォルトの名無しさん
2016/04/05(火) 22:59:32.35ID:hSAjYG8rリストの末尾に連結するとO(n)でオーダーが無駄に上がる、
という肝心の点が理解できてないのかな
まあバッファのコピー云々を見るにそうなんだろうけど
0275デフォルトの名無しさん
2016/04/06(水) 13:41:13.42ID:txEWT2Ww型に頼らなくてもコードが読めるような超能力でもない限り
0276デフォルトの名無しさん
2016/04/06(水) 19:48:19.50ID:P/7KHel40277デフォルトの名無しさん
2016/04/06(水) 20:34:59.42ID:1LxesQSAそうじゃないなら……
0278デフォルトの名無しさん
2016/04/06(水) 21:04:05.87ID:eFJoLkWWなんでHaskellerっていうか関数型言語好きは手慰みコーディングが好きなのか
0279デフォルトの名無しさん
2016/04/06(水) 21:15:01.86ID:1LxesQSA0280デフォルトの名無しさん
2016/04/06(水) 23:50:18.40ID:IHdtvNSs0281デフォルトの名無しさん
2016/04/06(水) 23:59:46.82ID:I6OThI1C自動的に複数のコアを利用できますからね。
0282デフォルトの名無しさん
2016/04/07(木) 00:11:48.58ID:WDm2021j0283デフォルトの名無しさん
2016/04/07(木) 00:24:55.38ID:838jiYpM0284デフォルトの名無しさん
2016/04/09(土) 04:33:25.45ID:dgqvoixnno cabal file foundと出ました
0285デフォルトの名無しさん
2016/04/09(土) 05:11:27.17ID:Vzzo5Ul20286デフォルトの名無しさん
2016/04/09(土) 07:03:57.46ID:1BFZNWV80287デフォルトの名無しさん
2016/04/09(土) 14:30:16.21ID:b41tx2RxFunctional and Reactive Domain Modeling を読んだ方が
Haskell をはるかに役立たせる事ができる。
0288デフォルトの名無しさん
2016/04/09(土) 19:27:52.11ID:UzLa1aNi0289デフォルトの名無しさん
2016/04/09(土) 19:49:05.10ID:w7hE6ybz0290デフォルトの名無しさん
2016/04/09(土) 20:44:53.14ID:+YXoN4jI0291デフォルトの名無しさん
2016/04/09(土) 21:52:21.35ID:2MBZRcp4合成した射がHom集合に含まれるというのが圏の定義
0292デフォルトの名無しさん
2016/04/09(土) 22:04:03.25ID:+YXoN4jIそうだったんですか!
ありがとうございます。
0293デフォルトの名無しさん
2016/04/09(土) 23:51:04.93ID:e0N/R4cHsp11 [] y=y
sp11 (x:xs) y=sp11 xs y:x
--sp11 (x:xs) y=sp11 xs y++x
僕ちゃん今これが通らないでCAしてるのが通る理由を10分ほど考えて納得して満足してたのにやたらハイレベルなお話をしていますなぁ
0294デフォルトの名無しさん
2016/04/10(日) 01:23:55.70ID:e/CI/bNW0295デフォルトの名無しさん
2016/04/10(日) 01:24:54.71ID:e/CI/bNW0296デフォルトの名無しさん
2016/04/10(日) 02:19:12.14ID:h8a8i3Ei型というかリストの取り扱い方間違えてたな。あ、これじゃ構文糖衣ならんわ的な
いや型があってないは間違ってはないんだが
0297デフォルトの名無しさん
2016/04/10(日) 04:13:19.01ID:e/CI/bNW構文糖衣ならんわ的? 意味不明にも程があるな
concat . reverse
で済む程度の関数をわざわざ定義する意味もわからん
0298デフォルトの名無しさん
2016/04/10(日) 05:59:18.14ID:jyVvoqyQ既にある車輪を手際良く組合せる能力を育てろ
目的の機能は、要するに既知の有名関数のこれこれこれの組み合わせに過ぎないと気づく能力を育てろ
0299デフォルトの名無しさん
2016/04/10(日) 06:02:28.00ID:HOcPU6mM0300デフォルトの名無しさん
2016/04/10(日) 08:20:12.80ID:FcOwY46Hローレベルすぎる
中学生か
0301デフォルトの名無しさん
2016/04/10(日) 09:17:57.02ID:YvXo8qRdこれはつまり代名詞とか定冠詞とかそういうのを使うなって意味か
0302デフォルトの名無しさん
2016/04/10(日) 10:50:50.90ID:h8a8i3Ei今6章やけどずっとプロンプト内で車輪の再発明コードコンパイルしてるわ
流石に少し飛ばしてsystemIOやmain doやった
0303デフォルトの名無しさん
2016/04/10(日) 11:16:53.68ID:e/CI/bNW0304デフォルトの名無しさん
2016/04/10(日) 12:08:24.49ID:f+MX8G/w同じですよ。
0305デフォルトの名無しさん
2016/04/10(日) 12:25:10.81ID:YvXo8qRd有害または無益なものを批判するだけでもいいじゃん
0306デフォルトの名無しさん
2016/04/10(日) 12:36:41.11ID:2Sp/+uDX0307デフォルトの名無しさん
2016/04/10(日) 12:42:53.76ID:YvXo8qRd説明を要求する権利に甘えるな
0308デフォルトの名無しさん
2016/04/10(日) 13:04:01.30ID:2Sp/+uDXてっきりソースやソフトの実用性の話だと思っていたけど
あなたの文章では本(もしくはここの人たち?)に対する実用性の話をしだしているように読めるんだけどあってる?
しかも本はすごハスについての話題だとおもったけどすごハスは最発明するなとも言ってないんだけど
どの本に対しての話なのかも読み取れないんだけど
結局何を言いたかったの?
0309デフォルトの名無しさん
2016/04/10(日) 13:32:57.85ID:YvXo8qRdしかし、ソースやソフトに限定すればするほど理論的になっていく
限定がない方が実践的だし、実用的だと思う
0310デフォルトの名無しさん
2016/04/10(日) 13:48:44.45ID:2Sp/+uDX0311デフォルトの名無しさん
2016/04/10(日) 13:57:09.29ID:eD46Bq4L自分で実践して何かを作る時にするなといってるだけwwww
0312デフォルトの名無しさん
2016/04/10(日) 14:47:48.85ID:df5SYaAC0313デフォルトの名無しさん
2016/04/10(日) 16:14:53.48ID:FcOwY46Hこれはあれだ、モスバーガーの食い方と同じやつだ
つまり相手にしてはいけない
0314デフォルトの名無しさん
2016/04/10(日) 19:18:39.53ID:bGdugtOrHaskellの実用先は論文の生産
0315デフォルトの名無しさん
2016/04/10(日) 19:48:29.81ID:AP+c5oKN0316デフォルトの名無しさん
2016/04/11(月) 19:48:46.70ID:HssZkwMb0317デフォルトの名無しさん
2016/04/11(月) 22:03:36.45ID:lUP9Y6l3幅優先探索とか動的計画法の書き方が分からなくて競技プログラミング詰んだ
0318デフォルトの名無しさん
2016/04/11(月) 22:16:23.13ID:edqlulhA0319デフォルトの名無しさん
2016/04/11(月) 23:09:22.53ID:ByxXtYTi幅優先探索なら、Listじゃなくて双方向キュー Data.Seq を使えばいいよ
動的計画法はメモを引数で持ち回すとかいろいろ方法がある
0320デフォルトの名無しさん
2016/04/12(火) 01:03:49.78ID:odne2N/qリストにもタプルにもなるデータ構造とか
それは静的型では不可能というか可能だとしても邪道
0321デフォルトの名無しさん
2016/04/12(火) 09:58:04.72ID:+Rec4Xwk実行時型検査は邪道だけど(できないわけではない)
0322デフォルトの名無しさん
2016/04/14(木) 23:58:19.51ID:C943vaja0323デフォルトの名無しさん
2016/04/15(金) 22:39:56.48ID:04ZAKGz80324デフォルトの名無しさん
2016/04/16(土) 00:04:38.27ID:A75UJ+qBC/C++もJavaもPythonもすべて滅びる。
0325デフォルトの名無しさん
2016/04/16(土) 04:43:02.11ID:P/Gx7cPV0326デフォルトの名無しさん
2016/04/16(土) 18:34:43.45ID:dotHc+RCマルチコアで処理しようと思ったら、そこがボトルネックになるという考えは正しい?
0327デフォルトの名無しさん
2016/04/16(土) 20:30:49.09ID:eellksOQサンクの構造を変更するのに無限の時間がかかるとしても
そこと関係ない部分にとってはボトルネックにならないし
関係ある部分はシングルコアでもマルチコアでも無限に待たされる
0328デフォルトの名無しさん
2016/04/17(日) 10:04:04.56ID:FqwYan/n待機じゃなくて自分で率先して変更しようとするから排他制御になる
0329デフォルトの名無しさん
2016/04/17(日) 12:02:13.79ID:Rdn/TyF00330デフォルトの名無しさん
2016/04/17(日) 15:43:08.41ID:5McqnKxO0332デフォルトの名無しさん
2016/04/19(火) 22:48:22.42ID:GUcpde7h0333デフォルトの名無しさん
2016/04/20(水) 09:21:38.53ID:dTPS4iPY0334デフォルトの名無しさん
2016/04/20(水) 09:39:35.46ID:io4dbaLH半死のプロジェクト
エディタとしての使用感も凄え微妙
0335デフォルトの名無しさん
2016/04/20(水) 20:10:33.75ID:Tnrtp5pD0336デフォルトの名無しさん
2016/04/22(金) 19:58:59.40ID:/z9+X7KmHaskellで書かれているだけあって世界最高のエディタだと思うけど。
拡張性が高いし、使用感も最高。
滑るように筆が進む。
0337デフォルトの名無しさん
2016/04/22(金) 20:02:19.82ID:/z9+X7Km1万コアのマシンを使えば自動的に1万倍の速さで書ける。
これは素晴らしいこと。
JavaやC++には真似できまい。
0338デフォルトの名無しさん
2016/04/22(金) 21:05:33.41ID:F5OOvSJd最初の一時に盛大に果実が実り、あとは閉じた世界の中でじわじわと腐っていく。
0339デフォルトの名無しさん
2016/04/22(金) 21:25:46.68ID:7+eL8tO20340デフォルトの名無しさん
2016/04/22(金) 23:15:47.70ID:RfwjpRNt良い部分は専門知識がないと判らない
0341デフォルトの名無しさん
2016/04/22(金) 23:25:12.89ID:/z9+X7Km0342デフォルトの名無しさん
2016/04/23(土) 00:22:37.98ID:h0nkzBbJ悪い部分ばかり見えるというのは理にかなっている
0343デフォルトの名無しさん
2016/04/23(土) 09:30:09.85ID:JWq9tg2THaskell の Functor class で pure (return) が強制されてないのは、なぜですか?
Applicative (歴史的にはMonad) で、分けて導入する理由は、無いと思えるのですが。
0344デフォルトの名無しさん
2016/04/23(土) 10:38:20.50ID:h0nkzBbJ吸収法則?
0345デフォルトの名無しさん
2016/04/23(土) 10:45:20.92ID:zyr2RBeo0346デフォルトの名無しさん
2016/04/23(土) 13:39:22.09ID:g8SqXRs6理由は簡単だ、pureを定義できないものがあるからだ。例えばConstとかだな。
0347デフォルトの名無しさん
2016/04/23(土) 13:43:14.32ID:X//hQ6+3今 yesod を cabal でインストールしようとしたら、
依存パッケージの monad-logger などでバージョンの問題が発生し、
いくつかのパッケージをダウングレードしないと yesod がインストールできない状態です。
たまたま今はバージョン問題が解決されるまで待てない状況なので、
Stack を使って yeaod に必要な環境を作るという対処を考えました。
そこで質問です。
今この状況でStack を使って yeaod に必要な環境を作る場合、
ghc はアンインストールしておかないと問題が起きるでしょうか。
cabal でインストールされているライブラリは消しておかないとだめでしょうか。
0348デフォルトの名無しさん
2016/04/23(土) 14:41:43.40ID:zyr2RBeoConst は Applicativeのインスタンスだ
Control.Applicative のドキュメントを見よ
0349デフォルトの名無しさん
2016/04/23(土) 14:58:41.70ID:g8SqXRs6Monoid制約見えてないのか
0350デフォルトの名無しさん
2016/04/23(土) 15:04:05.87ID:zyr2RBeo0351デフォルトの名無しさん
2016/04/23(土) 15:13:58.69ID:g8SqXRs6中にMonoidのインスタンスが入ってる時しかfmapできなくなるんだけどいいの
0352デフォルトの名無しさん
2016/04/23(土) 15:21:37.39ID:trNShuTTたぶん問題ないよ。stack は特に指定しない限り stack がインストールしたghcやライブラリを使う。
このことを確認する方法。
まず、stack unpack yesod したのち、yesodのディレクトリに移り、
stack exec -- which ghc
して、stackが使うghc が .stack ディレクトリ以下の階層にあることを確かめる。
stack exec -- ghc-pkg list
で、使用されるライブラリが .stack ディレクトリや .stack-work ディレクトリの深くに入っていることを確認する。
0353デフォルトの名無しさん
2016/04/23(土) 18:08:35.13ID:h0nkzBbJMaybeを使う理由は無いと思ってバリバリ書いてたら急にMaybeが来る感じ
0354デフォルトの名無しさん
2016/04/23(土) 20:09:25.80ID:X//hQ6+3ありがとうございます。
問題なく環境を構築できました。
0355デフォルトの名無しさん
2016/04/24(日) 02:18:00.75ID:0A/NlO7U0356デフォルトの名無しさん
2016/04/28(木) 19:35:13.20ID:myZYEKUT鶴キャピタルと思ってたらペジ一とかあってよく分からないんだけど。
あとPFI在籍時に心を壊したみたいな記事を見つけたけど、ここってブラック?
0357デフォルトの名無しさん
2016/04/28(木) 19:44:58.09ID:myZYEKUT0358デフォルトの名無しさん
2016/04/29(金) 00:41:56.53ID:p88N57n40359デフォルトの名無しさん
2016/04/30(土) 00:47:21.17ID:v4IXAsZhここで
class (Functor f) => Applicative f where
(<*>) :: f (a -> b) -> f a -> f b
instance Applicative Maybe
Nothing <*> _ = Nothing
左辺のNothing が Nothing :: f (a -> b)
右辺のNothing が Nothing :: f b
型ちがくね?
0360デフォルトの名無しさん
2016/04/30(土) 10:31:52.74ID:N4gpQEz/そりゃ違うでしょ、Maybe (a -> b)型のNothingとMaybe b型のNothingなんだから
0361デフォルトの名無しさん
2016/04/30(土) 11:36:11.82ID:XDCplkAG変数の型が違うならエラーにしないと危険じゃないかってことね
let n = Nothing in n == (n <*> undefined) -- True
これは変数じゃなくて無引数の多相関数だからエラーじゃない
ちなみにletではなくラムダで変数束縛すれば多相にならない
(\ n -> n == (n <*> undefined)) Nothing -- エラー
0362デフォルトの名無しさん
2016/04/30(土) 17:17:20.69ID:v4IXAsZh記述されているのは構築子だから別の値ってことか
>>361
let多相だね
0363デフォルトの名無しさん
2016/04/30(土) 18:42:21.31ID:dTOuLsNgあと、letによる束縛とラムダによる束縛は別物なのかぁ
為になったねぇ〜為になったよぉ〜
0364デフォルトの名無しさん
2016/04/30(土) 22:03:49.66ID:kBh7fjCfhttps://www.schoolofhaskell.com/school/to-infinity-and-beyond/pick-of-the-week/groundhog
http://hackage.haskell.org/package/groundhog-th-0.7.0.1/docs/Database-Groundhog-TH.html
これらよりももう少し優しい感じのチュートリアルや解説があると嬉しいのですが。
ちなみに、今まで Persist を使っていました。
シンプルでかなり使いやすいライブラリでしたが、主キーが勝手に作られたりと融通が効かない所もあり、
その点 Groundhog はより細かく調整できると聞き、調べているところです。
0365デフォルトの名無しさん
2016/05/01(日) 12:59:02.29ID:tKi6j9CTBitTorrentがオープンソースで開発されています
言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?
Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al
ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw
The Covenant Project
概要
Covenantは、純粋P2Pのファイル共有ソフトです
目的
インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します
特徴
Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)
接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
2
0366デフォルトの名無しさん
2016/05/01(日) 17:53:33.69ID:rVZalbzShttps://code.google.com/codejam/contest/11254486/scoreboard?c=11254486#sp=871
0367デフォルトの名無しさん
2016/05/01(日) 19:57:50.18ID:q399unAyコンパイルエラーがわかりにくい はたして慣れるのだろうか
0368デフォルトの名無しさん
2016/05/01(日) 20:34:11.26ID:bRTHAwhW嫌がらせかってくらいコンパイル通してくれなくて最初の頃は辛かった
しかし、走り出してエラー出すくらいなら初めから走れない方がマシなんだって学ぶんだ
0369デフォルトの名無しさん
2016/05/01(日) 20:44:21.15ID:bRTHAwhW有能な怠け者 プロジェクトリーダー
無能な働き者 コンパイル通って実行時エラー
無能な怠け者 監査部門へ転属
0370デフォルトの名無しさん
2016/05/01(日) 20:59:15.57ID:4Y0CumS/0371デフォルトの名無しさん
2016/05/01(日) 21:13:48.81ID:uKoS1wpjIntegerにしたらなぜか動いたけども
0372デフォルトの名無しさん
2016/05/07(土) 19:59:15.34ID:M+qs63jqsystem-argv0 パッケージに頼らざるを得ませんでしたが、
今はどうなのでしょう。
進化した標準ライブラリで事足りますか?
0373デフォルトの名無しさん
2016/05/08(日) 11:02:25.93ID:/0/pzihM進化されると困る
OSの進化よりライブラリの進化の方が激しい場合にはライブラリを使う意味がわからん
0374デフォルトの名無しさん
2016/05/08(日) 13:41:39.46ID:5VemuvB9ハードウェアのPEZY?
どこに向かってるんでしょうか。
0375デフォルトの名無しさん
2016/05/08(日) 15:25:17.03ID:ZUsvhrTO0376デフォルトの名無しさん
2016/05/13(金) 02:43:07.06ID:DqCdCrx3コンパイラは親切に教えてくれるだけ。
言語を呪う暇が有ったら精進せい。
0377デフォルトの名無しさん
2016/05/13(金) 08:07:43.53ID:mEOqqcQ9むしろ自分で一行も書かない方がエラーしませんから
0378デフォルトの名無しさん
2016/05/13(金) 22:06:50.78ID:1un4dmOW0379デフォルトの名無しさん
2016/05/14(土) 09:02:55.24ID:eR5KeWi+定義もしたくない人はまだ我慢している
0380デフォルトの名無しさん
2016/05/14(土) 14:46:07.64ID:XgEAo3/Vペアプログラミングの相方がAIになった感じ
部分的には実現しつつあるが
0381デフォルトの名無しさん
2016/05/15(日) 08:20:24.57ID:XkJuevwcIDEで出来てない?
誤りが仕様書と違うとかだと無理だけど(´・ω・`)
0382デフォルトの名無しさん
2016/05/15(日) 08:57:05.17ID:1apbfDjR0383デフォルトの名無しさん
2016/05/16(月) 21:47:15.21ID:CaYDtDLn信じる強い心が有れば、それは最早エラーではないのです。
0384デフォルトの名無しさん
2016/05/17(火) 00:24:35.05ID:dHn9rgtk0385デフォルトの名無しさん
2016/05/17(火) 13:41:31.57ID:hwMqt89i0386デフォルトの名無しさん
2016/05/18(水) 13:07:37.77ID:umgMkwtM0387デフォルトの名無しさん
2016/05/18(水) 17:36:22.26ID:gNA+uVOn0388デフォルトの名無しさん
2016/05/18(水) 21:22:36.67ID:yDy1hpmH0389デフォルトの名無しさん
2016/05/19(木) 04:46:05.22ID:4D1NuyNI0390デフォルトの名無しさん
2016/05/19(木) 08:10:39.63ID:wMatBPK50391デフォルトの名無しさん
2016/05/19(木) 08:32:15.82ID:UIEjFqFy正規分布のように中心が一つしかないという保証がなくなるからか
0392デフォルトの名無しさん
2016/05/20(金) 07:04:01.60ID:SR6Xc90A0393デフォルトの名無しさん
2016/05/20(金) 22:38:42.77ID:1aQ4wkxXHaskellのプログラムを大学の研究室に納品したことがある
0394デフォルトの名無しさん
2016/05/21(土) 02:33:23.73ID:DrfWRUfn0395デフォルトの名無しさん
2016/05/21(土) 16:49:35.06ID:l1JVtE5I0396デフォルトの名無しさん
2016/05/21(土) 18:16:48.53ID:/Psi2UIthttps://ja.wikipedia.org/wiki/%E5%BD%A2%E5%BC%8F%E7%A7%91%E5%AD%A6
だね
0397デフォルトの名無しさん
2016/05/22(日) 05:31:08.64ID:ZAJLrv7i闇米を食べないと生きのこれないなら食べればいい
0398デフォルトの名無しさん
2016/05/22(日) 09:41:44.24ID:0H/7GBCMhttp://downloads.haskell.org/~ghc/8.0.1/docs/html/users_guide/8.0.1-notes.html
0399デフォルトの名無しさん
2016/05/22(日) 18:33:10.38ID:wU59/EOpソースコードはVimtouchで書くからコンパイル環境だけでいいよ
0400デフォルトの名無しさん
2016/05/22(日) 18:33:54.43ID:wU59/EOpぼくのかんがえたさいきょうのエラーメッセージ出せるの?
0401デフォルトの名無しさん
2016/05/23(月) 17:33:33.01ID:2tbsk8rjC言語は純粋関数型言語ってまじなの?
0402デフォルトの名無しさん
2016/05/23(月) 19:57:19.74ID:eO7rd+do0403デフォルトの名無しさん
2016/05/23(月) 20:04:56.94ID:rPmJbVu7主語を大きくしたいからだよな
C言語というと主語が小さいから
0404デフォルトの名無しさん
2016/05/23(月) 21:56:35.23ID:1ZOe0erL0405デフォルトの名無しさん
2016/05/23(月) 22:36:53.71ID:rPmJbVu7C言語は手続き型言語である、ゆえにC言語はオワコンといわれると何か違和感がある
0406デフォルトの名無しさん
2016/05/24(火) 00:05:33.36ID:9rXEqh5f十年後にRustになってたら面白いのだが
0407デフォルトの名無しさん
2016/05/24(火) 15:51:07.35ID:4otCrHFUその後またRustっぽいのが出て潰れてを繰り返して当分C(++)は安泰
0408デフォルトの名無しさん
2016/05/24(火) 16:52:41.22ID:RDPSz39C0409デフォルトの名無しさん
2016/05/24(火) 17:06:38.26ID:EVeDeqwX0410デフォルトの名無しさん
2016/05/24(火) 17:30:07.50ID:RDPSz39C0411デフォルトの名無しさん
2016/05/24(火) 18:50:13.74ID:jjx2hd2q手続き型がオワコンと言うのは願望に過ぎんのじゃないか?
だから違和感がある。
0412デフォルトの名無しさん
2016/05/24(火) 19:19:21.98ID:EVeDeqwXみんな良い願望
0413デフォルトの名無しさん
2016/05/24(火) 22:44:06.20ID:G9TLp4kOあとObjCも
0414デフォルトの名無しさん
2016/05/24(火) 23:50:13.91ID:80vE3gqA0415デフォルトの名無しさん
2016/05/25(水) 22:15:27.02ID:5tekMzBCparsec1
parsec2
parsec3
同じ様な名前のパッケージがこんなにもあるのは何なの?
parsec3 が最強だが暴れ馬で素人には扱いづらい、みたいな?
0416デフォルトの名無しさん
2016/05/26(木) 07:32:42.33ID:F8ZCE4kgそれは構文木の型がuser-definedだから
user-definedより規約、という手もあるがそれをやるとLispのように型がなくなる
0417デフォルトの名無しさん
2016/05/29(日) 10:25:35.29ID:cWnz6Nezコンパイルはしないで文法的チェックのみ高速省メモリで済ます方法はありませんか?
0418デフォルトの名無しさん
2016/05/29(日) 10:52:46.77ID:hkeRWX+0flymake とか?ちょっと違うかな
0419デフォルトの名無しさん
2016/05/29(日) 11:14:28.41ID:3jHNsFdi「ちょっと書き換えてみたけど、これって文法的に正しいのか分からん。チェッカーが欲しいな」
という状況が想像できないんだが・・・
Haskell の「文法」ってそんなに難しいか?
モダンな言語の中でも比較的シンプルな方だと思うぞ。
(言語拡張によってはちょっとアレだが)
それに、結局最後にはロードするなりコンパイルするんだろ?
その時にちゃんと文法エラーが指摘されるんだから、
それまでは気にせずコーディングを続ければいいと思う。
型の間違いと違って、文法間違いの影響なんてごく局所的なものなんだし。
0420デフォルトの名無しさん
2016/05/29(日) 11:35:32.05ID:cWnz6Nezちょっと違う気がします
>>419
そうですか。。。
0421デフォルトの名無しさん
2016/05/29(日) 11:38:27.79ID:cWnz6Nez両側に適用したいときは自分で(汚く)書くしかありませんか? それともそういう時用の何かがあるのですか?
0422デフォルトの名無しさん
2016/05/29(日) 12:18:30.83ID:MVe5mOf80423デフォルトの名無しさん
2016/05/29(日) 12:25:45.44ID:3jHNsFdi自分で綺麗に書く方法もある。
綺麗に書く能力がなかったり、
そもそもこの程度でも再発名はしたくないとか、
みんなと一緒が良いとか思っているのなら
Data.Bifunctor.bimap 関数を使うのも手。
まぁ、これはあなたが望んでいる挙動とは違うかもしれんが。
0424デフォルトの名無しさん
2016/05/29(日) 13:04:59.40ID:cWnz6Nez自己解決しました
0425デフォルトの名無しさん
2016/06/01(水) 15:39:34.41ID:HdKKv0pS0426デフォルトの名無しさん
2016/06/01(水) 16:57:59.93ID:RDQRhO1c関数界のエースです。
0427デフォルトの名無しさん
2016/06/01(水) 17:43:05.33ID:RnjmzRnq0428デフォルトの名無しさん
2016/06/01(水) 23:36:25.34ID:VULwVLKo0429デフォルトの名無しさん
2016/06/02(木) 13:27:58.23ID:UczpuTGcグローバルスタンダードなナレッジを持った情報技術者(UCLA卒業)。本人曰わく。
0430デフォルトの名無しさん
2016/06/02(木) 14:15:52.62ID:mrjBYZ6h日本のへなちょこIT業界ならともかく
0431デフォルトの名無しさん
2016/06/03(金) 07:57:06.24ID:gErWnzdr0432デフォルトの名無しさん
2016/06/03(金) 08:33:08.05ID:JXPKk4n6遠ければ使い物にならない
0433デフォルトの名無しさん
2016/06/03(金) 08:41:19.89ID:gErWnzdr0434デフォルトの名無しさん
2016/06/03(金) 09:02:04.58ID:JXPKk4n6宇宙じゃ使い物にならない
0435デフォルトの名無しさん
2016/06/03(金) 09:20:50.53ID:gErWnzdr0436デフォルトの名無しさん
2016/06/04(土) 10:40:42.55ID:IyXgOGn30437デフォルトの名無しさん
2016/06/04(土) 13:17:17.24ID:RcJdjklNhttp://stackoverflow.com/questions/37293422/a-true-frp-principle-and-reactivebanana-code
0438デフォルトの名無しさん
2016/06/04(土) 19:02:44.37ID:D9CDDk1Tどっかの団体を代表してるわけでもない唯の無職なんだから
0439デフォルトの名無しさん
2016/06/04(土) 19:33:19.52ID:OVl98QFHStackOverflow に限った話ではないが、あの様なQ&A形式のサイトでは、
ある回答者が間違ったことを言っていると思ったなら、
あなたが正しい回答で質問者を導けばよい。
それができない、やりたくないなら無視しとけ。
全く関係ないこんな所でグチるな。
0440デフォルトの名無しさん
2016/06/04(土) 20:50:55.34ID:qcMF66HN0441デフォルトの名無しさん
2016/06/04(土) 21:02:39.69ID:0F871G7+馬鹿正直に相手するなどそれこそ馬鹿のすること
0442デフォルトの名無しさん
2016/06/05(日) 09:33:55.77ID:bEydbMY30443デフォルトの名無しさん
2016/06/05(日) 10:24:17.19ID:4/Mq9UHgたとえば、
main :: ()
main = getArgs >>= return . (== "りす") . head >>= print
これをコンパイルして実行ファイル risu を作った場合、
どんな実行環境でも 「risu りす」 は True を標準出力に出力しますか?
0444デフォルトの名無しさん
2016/06/05(日) 12:01:28.44ID:bEydbMY3ノルマを課すことと達成することが一致しないように
0445デフォルトの名無しさん
2016/06/05(日) 13:23:43.46ID:8WdagiWYGHCはUTF-8で書くと思うので、そのソースコードのりすはUTF-8のりすです。従いまして、例えばSJISコンソールなぞからいくらりすを送っても梨の礫でありましょう
0446デフォルトの名無しさん
2016/06/06(月) 12:31:09.12ID:EqzbMvnJ0447デフォルトの名無しさん
2016/06/06(月) 20:19:50.08ID:vWa0r7Asつまりコマンド引数から得た文字列は端末のエンコーディング設定と同じ文字コードになっている、
という解釈でよいのですね。
だからリテラル文字列と一緒に処理する時は注意が必要、と。
ところで梨の礫なんて言葉、最近はなかなかお目にかかれません。
おばあちゃんでしょうか。
なんかほっこりした気分になりました、ありがとうございます。
0448デフォルトの名無しさん
2016/06/13(月) 20:25:55.22ID:s5cEFL5Fletter `manyTill` try p
pは数文字食ってから失敗するかもしれないパーザです。これはpが成功しない間 letter を繰り返し食って、最後にpを成功させて、食ったpの部分を除いた文字列を返しますが
除かないで末尾にくっつけたまま返して欲しい場合はどうしますか?
0449デフォルトの名無しさん
2016/06/13(月) 22:43:48.50ID:rcz/H1iF0450デフォルトの名無しさん
2016/06/14(火) 21:28:34.01ID:R0tjr5X3func1 :: Int -> IO (Int, Int)
func1 n = do
let n' = func2 n
return (n, n')
func2 :: Int -> Int
func2 n = n * 2
IO関数の結果を通常の名前に束縛しようとしたら
(v1, v2) = func1 エラーになりました。
IO関数の返値を取り出して通常の変数に束縛して、
通常の関数に引き渡し計算をしたいのですが
その方法をもし知ってましたら教えて下さい。
0451デフォルトの名無しさん
2016/06/14(火) 21:38:10.85ID:Sm/6bUGx0452デフォルトの名無しさん
2016/06/14(火) 22:27:07.09ID:5Tpa+uD8日本語も意図もよくわからんが、そもそも
func1 n = (n, func2 n)
でいいと思うのだが。
0453デフォルトの名無しさん
2016/06/14(火) 22:44:08.85ID:XZG+uE2j俺も意図が分からんが、こういう事か?
func0 = do
(x, y) <- func1
func3 x
func4 y
0454デフォルトの名無しさん
2016/06/14(火) 22:47:22.10ID:XZG+uE2jすまん、質問文につられて引数を忘れてた。
(x, y) <- func じゃなくて (x, y) <- func 1 な。
0455デフォルトの名無しさん
2016/06/15(水) 22:15:27.27ID:vYYf6Ztkどうもありがとうございます。
「unsafePerformIO」や「<-」での
バインド試してみます。
0456デフォルトの名無しさん
2016/06/15(水) 22:30:31.44ID:6m5ApfU90457デフォルトの名無しさん
2016/06/15(水) 23:18:57.29ID:bw2YOmBWpythonなら余裕なんだが
0458デフォルトの名無しさん
2016/06/16(木) 02:04:27.75ID:NRUgKoir「安全性の低いアプリの許可」がウザいけど
0459デフォルトの名無しさん
2016/06/16(木) 17:01:17.73ID:pAcx7t63ありがとう
普通に送れてる人がいるなら
やっぱりこっちの環境が悪いんやな~
0460デフォルトの名無しさん
2016/06/16(木) 22:02:58.55ID:NRUgKoir前バージョンでプルリク入ってたので
バージョンを1.3.2に上げれば大丈夫
0461デフォルトの名無しさん
2016/06/17(金) 11:33:07.28ID:qUa7S6e8smtps-gmailを1.3.1から1.3.2にアップデートしたら解決しました
ありがとうございました
0462デフォルトの名無しさん
2016/06/19(日) 09:34:14.61ID:U9gQeIb+ghci上でletするのと違って、hsファイルではletしたらinしないとダメ。
returnの前にin入れるよろし。
0463デフォルトの名無しさん
2016/06/19(日) 10:02:38.64ID:U9gQeIb+func1 n = let
n' = func2 n
func2 n = n * 2 in
return (n, n')
letとか使い慣れてなかったからインデントエラーで手間取った^^;
returnは普通の関数(というか、do n <- getContentsもgetContents >>= n -> の構文糖衣なだけで、普通のモナド専用演算子だが)
0464デフォルトの名無しさん
2016/06/19(日) 10:08:35.36ID:U9gQeIb+>>= n ->は
>>= の後にnを引数に取るラムダ式に訂正ね。
0465デフォルトの名無しさん
2016/06/19(日) 10:16:10.21ID:U9gQeIb+0466デフォルトの名無しさん
2016/06/19(日) 14:09:22.54ID:+Gq0sOtSdoの中のletって、inいらないんじゃなかったっけ?
0467デフォルトの名無しさん
2016/06/19(日) 18:53:19.01ID:pXg+pklT人工知能でしょうか?
有名ソフトには何がありますか?
c#のラムダ式は好きです
0468デフォルトの名無しさん
2016/06/19(日) 19:15:45.51ID:Z3K3Aq0Z速度や低レイヤーを触りたいとかなら他の言語にしとけ
人工知能はpythonとかライブラリの揃ってていいんじゃないだろうか 知らんけど
0469デフォルトの名無しさん
2016/06/19(日) 19:43:39.12ID:KC3RPfxA0470デフォルトの名無しさん
2016/06/19(日) 21:06:24.60ID:XxQWN3nU0471デフォルトの名無しさん
2016/06/20(月) 04:48:23.69ID:SIt1WX2PC++では普通に使うのに未定義になる
0472デフォルトの名無しさん
2016/06/21(火) 12:29:55.40ID:/zCyXUk+デフォルトの振舞いを批判する暇があったら対案を出せ
0473デフォルトの名無しさん
2016/06/23(木) 06:48:52.26ID:Yp4/uj8T0474デフォルトの名無しさん
2016/06/23(木) 18:55:59.49ID:05qDBgT10475デフォルトの名無しさん
2016/06/25(土) 09:42:45.94ID:VirkFiI/add :: Int -> (Int -> Int)
add x y = x + y
今、ハットンの本を読んでいます。
add :: Int -> (Int -> Int)
のほうは意味がよくわかるのですが、
add x y = x + y
この表記法のがしっくりしません。
add : Z -> {f | f は Z から Z への写像}
add : x -> (f : Z ∋ y -> x + y ∈ Z)
なので、
(add(x))(y) = x + y
となるという意味かと思います。
0476デフォルトの名無しさん
2016/06/25(土) 09:48:52.83ID:VirkFiI/ありません。
引数は1つしか取らないということでいいのでしょうか?
たとえば、
f x = ...
と書いた場合、
「=」は写像の対応を表す記号で、
x -> ...
という意味なのでしょうか?
0477デフォルトの名無しさん
2016/06/25(土) 09:53:44.96ID:VirkFiI/という表記法は普通の関数の表記法とは全く異なるかりー化された関数用
の全く新しい表記法という考えでOKでしょうか?
0478デフォルトの名無しさん
2016/06/25(土) 09:54:40.72ID:mWRDlDK6add x y = x + y
は
add = ¥x -> ( ¥y -> x + y )
の略記( ¥x -> … はラムダ式のリテラル)。
どうしても書きたきゃ1段階だけ略記して
add x = ¥y -> x + y
と書いても構わない(がそう書くのは見たことがない)。
0479デフォルトの名無しさん
2016/06/25(土) 09:58:23.93ID:mWRDlDK6f x
で関数 f を x に適用するという表記が腑に落ちてないのかしら。
関数型言語で関数適用をいちいちf(x)みたいにカッコつけて書いてると煩雑なので
空白それじたいが(左結合の)関数適用演算子であるかのように表記する慣習。
0480デフォルトの名無しさん
2016/06/25(土) 09:59:48.64ID:RoCVjm19f x = h (g x)
f = h . g
がすべて等価だったはず
0481デフォルトの名無しさん
2016/06/25(土) 10:01:20.88ID:VirkFiI/ありがとうございました。略記法なんですね。
add = \x -> ( \y -> x + y )
の正確な意味はまだわかりませんが、こっちのほうは意味がはっきり
わかります。
0482デフォルトの名無しさん
2016/06/25(土) 10:05:25.94ID:mWRDlDK6普通にラムダ式
λx.λy. x+y
のリテラル(表記法)ってだけ。
0483デフォルトの名無しさん
2016/06/25(土) 10:06:47.68ID:VirkFiI/ありがとうございました。
add x y = x + y
ハットンの本を読んでいて、カリー化が出てくるまでは、
関数は一つの引数しか取らないものしか出てきませんでした。
カリー化のところでいきなり x y という表記が出てきたの
でこれは何なのかと混乱してしまいました。タプルに似た
何かの型の要素なのかと思ったり。
略記法ということで納得しました。
ありがとうございました。
0484デフォルトの名無しさん
2016/06/25(土) 10:09:33.66ID:N25pDoND0485デフォルトの名無しさん
2016/06/25(土) 10:11:07.91ID:mWRDlDK6関数適用演算子としての空白は左結合なんで
add x y はカッコを入れてわかりやすく書けば (add x) y のこと。
Haskellの関数はご推察通り一つの引数しか取らない(最初からカリー化されている)。
0486デフォルトの名無しさん
2016/06/26(日) 17:11:33.57ID:gNzZf9B4subtract 1
Intの場合、両者は最適化でも効いて、全く同じコードになってくれますか?
後者は大袈裟なので前者を書きたい
0487デフォルトの名無しさん
2016/06/26(日) 17:20:23.54ID:K7S4TdpPpred = toEnum . (subtract 1) . fromEnum
あとは自分で考えろ
0488デフォルトの名無しさん
2016/06/26(日) 18:22:42.21ID:gNzZf9B4id . subtract 1 . id
と
subtruct 1
では素人考えでは後者の方が速いように思えますが、もしかすると上が下に変換されるかも知れないので判んないです><
0489デフォルトの名無しさん
2016/06/26(日) 18:56:11.33ID:fbaRfY1Tfoldr :: (a -> b -> b) -> b -> [a] -> b
以下では間違いなのでしょうか?
foldr :: (a -> a -> a) -> a -> [a] -> a
0490デフォルトの名無しさん
2016/06/26(日) 18:58:18.40ID:fbaRfY1Tproduct = foldr (*) 1
などを考えると下でもいいような気がするんですが。
0491デフォルトの名無しさん
2016/06/26(日) 19:18:28.21ID:K7S4TdpP(:) :: a -> [a] -> [a]
みたいな関数をfoldrに渡せなくなるだろ
foldr で map 書こうとしてみればわかるよ
0492デフォルトの名無しさん
2016/06/26(日) 19:23:57.64ID:gNzZf9B4二項演算が同じ型同士限定である必然性に乏しいから
0493デフォルトの名無しさん
2016/06/29(水) 07:04:16.86ID:r25iBQLU確信がないのに偉そうなことを言ってると必然的に反感を買う
無神論が許されないという必然性
0494デフォルトの名無しさん
2016/06/29(水) 08:38:27.16ID:3aYMqn0k0495デフォルトの名無しさん
2016/06/30(木) 03:18:46.20ID:u1Y0HI53<???> :: Int -> String -> String
3 <???> hello = "???hellohellohello???"
foldr <???> hello [2,2,3] = "???hellohellohello??????hellohellohello??????hellohellohello??????hellohellohello???"
適当に考えてみた 間違ってたらごめん
0496デフォルトの名無しさん
2016/06/30(木) 07:09:20.44ID:MCZcDeJz[a] -> (a -> b -> b) -> b -> b
Monoid m => [a] -> (a -> m) -> m
二項演算である必要がなかったので単項演算にする例です
0497デフォルトの名無しさん
2016/07/02(土) 11:46:36.27ID:dEZ6Zi3tdo記法が使えるから嬉しいってこと?
0498デフォルトの名無しさん
2016/07/02(土) 15:29:55.10ID:1toMA/Of0499デフォルトの名無しさん
2016/07/02(土) 15:30:33.06ID:Dac+6Yzz0500デフォルトの名無しさん
2016/07/02(土) 15:38:59.47ID:RwQxrqCZ0501デフォルトの名無しさん
2016/07/02(土) 20:47:59.70ID:M4B9OnE7演算中、今何の話してんの?ってことをはっきりさせて余計なこと話そうとする奴を黙らせる
うっかり余計なこと話して脱線しないようにするシステム
ADHD矯正システム
0502デフォルトの名無しさん
2016/07/03(日) 00:10:37.95ID:g/2Vj7Klバズワードを回避してまともな言葉が使えたらそれだけで嬉しい
0503デフォルトの名無しさん
2016/07/03(日) 00:22:39.53ID:q98BxS4G0504デフォルトの名無しさん
2016/07/03(日) 09:19:10.68ID:EfkUt+foこんな f って小さく書けますかね?
0505デフォルトの名無しさん
2016/07/03(日) 09:44:07.94ID:33tWiWdTwhere
f' c (xs,[]) = [xs++[c]]
f' c (xs,y:ys) = (xs++(c:y:ys)): f' c (xs++[y],ys)
これが小さいか大きいかは知らん
0506デフォルトの名無しさん
2016/07/03(日) 09:55:09.62ID:kAyTm6a5f :: a -> [a] -> [[a]]
f v xs = zipWith ((++) . (++ [v])) (inits xs) (tails xs)
ただし f '@' "" = ["@"] となるが、これが望んだ結果なのかは知らん。
0507デフォルトの名無しさん
2016/07/03(日) 09:57:26.96ID:33tWiWdTwhere
splits acc c xs [] = reverse $ (reverse (c:xs)):acc
splits acc c xs (y:ys) = splits ((reverse (c:xs)++(y:ys)):acc) c (y:xs) ys
main = print $ f '@' "abcde"
末尾再帰にしたった
0508デフォルトの名無しさん
2016/07/05(火) 23:11:56.42ID:teB4RGPK0509デフォルトの名無しさん
2016/07/05(火) 23:26:50.28ID:sg2Iayfh0510デフォルトの名無しさん
2016/07/06(水) 01:01:04.59ID:SGI4C5kxなぜ統一できんかったんや
0511デフォルトの名無しさん
2016/07/06(水) 03:35:43.05ID:3LtpfHJl0512508
2016/07/06(水) 09:07:58.46ID:e+6hT/7h0513デフォルトの名無しさん
2016/07/06(水) 11:03:34.97ID:3LtpfHJlhttp://ideone.com/IXEJ23
各行にそれぞれ複数の数字が書かれたデータを標準入力から読み取って
全部の行の合計を出力する例
0514508
2016/07/07(木) 00:39:56.05ID:3l/TdPIoありがとうございます。
メソッドチェーン専用の関数みたいなものは無いんですね。
d3.selectAll("p").style("color", "white");
のようにメソッドチェーンの途中で引数を取る関数がある場合はHaskellではどう書くのでしょうか?
0515デフォルトの名無しさん
2016/07/07(木) 07:24:10.29ID:2aQfBH7H二項演算なら無駄な括弧がなくなることは客観的にわかるが
0516デフォルトの名無しさん
2016/07/07(木) 07:35:43.00ID:LeKCeFlKd3 & selectAll “p” & style “color” “white”
他の言語で T1.method(T2,T3) (返値はR)みたいに書くものはHaskellだと
method :: T2 -> T3 -> T1 -> R という型を持つ普通の(カリー化)関数として書いて
関数適用や関数合成を連鎖させて書く
あと関数適用や関数合成は数学同様に右から左に連鎖させて書くのが普通で、
いわゆるメソッドチェーンのように左から右には書かない(モナドを除く)
>>513のようなものは
getContents >>= print.sum.map read.concat.map words.lines
が普通の書き方
0517デフォルトの名無しさん
2016/07/07(木) 07:45:28.85ID:LeKCeFlKどうしてもやりたければライブラリでなんとかするのがHaskellでの普通の発想で、
実際に(関数合成演算子のドットを数学的からくりを駆使してメソッドチェーンの
ドットとして読めるようにしてしまうことで)それをしてるのが Lens パッケージ
0518デフォルトの名無しさん
2016/07/08(金) 07:50:05.57ID:HHTq9Yfv僕はアルゴリズムに、再帰呼び出しによるマージソートを選択しました
solve::Int -> [Int]
solve j = (1 `tbl` j):(merge (map (`tbl` j) [2..]) $ solve (j+1))
tbl i j = i*(j+1)^3
(mainとmergeは本質でないので省略)このルーチンでのぞんだ所、答えは正しいのですが大きなmに対してMLEでした。原因はリストを使ってるせいで、評価済みの要素はもう不要にも関わらず保持し続けてしまっているせいだと思い、
sweep (a,b) c = (b,c) という関数を作り、
foldl' sweep (undefined,undefined) $ take (m+1) $ solve 1
することで最後の2つの要素のペア(求める値とその次の値)を得て、途中になぞっていったリストの要素はガベッジコレクション可能になると期待しました。
結果、前回より二つテストを前進しましたがそこでやはりMLEでした。次の一手を教えてください
0519デフォルトの名無しさん
2016/07/08(金) 08:51:31.05ID:6Zixlsju0520デフォルトの名無しさん
2016/07/08(金) 09:38:40.02ID:HHTq9Yfv0521デフォルトの名無しさん
2016/07/09(土) 10:23:30.04ID:6VbJAOZW0522デフォルトの名無しさん
2016/07/11(月) 08:51:48.39ID:/+kUKYFrconst 'A' 'B'
->'A'
で
const 'A' undefined
->'A'
となりますが、例えば
const <$> Just 'A' <*> undefined
->*** Exception: Prelude.undefined
となります。この結果の違いが生じる理由は何なのでしょうか
0523デフォルトの名無しさん
2016/07/11(月) 11:19:44.46ID:f8mQHfL+0524デフォルトの名無しさん
2016/07/11(月) 18:34:09.29ID:AjHPC2UO値を取り出して処理しようとする時点で例外を投げてる
<*> の第1数のモナドに包まれた関数が const だろうがなんだろうが
その関数の評価の前に<*> の第2引数の評価が生じるのでそうなる
0525デフォルトの名無しさん
2016/07/11(月) 18:42:28.43ID:AjHPC2UO多相性を端折ってMaybeに特化して敢えて再発明すると
<*> :: Maybe (a->b) -> Maybe a -> Maybe b
mf <*> mv = case (mf,mv) of
(Just f, Just v) -> Just (f v)
(Nothing, _) -> Nothing
(_, Nothing) -> Nothing
みたいになってて、undefined 値をパターンマッチしようとして例外投げてる(たぶん)
0526デフォルトの名無しさん
2016/07/12(火) 12:41:57.06ID:eYeWW2L80527デフォルトの名無しさん
2016/07/20(水) 10:25:34.27ID:VWk1kGFj>モナドは文脈
>>503
>ただのプログラム可能なセミコロンだろ
そんなのでモナドが分かるわけないだろ
自分でも分かってないだろ
そもそも受け売りじゃなく自分の言葉で言え
0528デフォルトの名無しさん
2016/07/20(水) 10:38:06.92ID:oWJ56nOjモナド則を満たせば何であれそれはモナドだし、それ以外に説明する言葉などない。
それがどのように便利なのかということと、モナドが何者であるかを混同するのはよくない。
0529デフォルトの名無しさん
2016/07/20(水) 11:46:05.72ID:VWk1kGFj誰に対して言ってるのか分からんが、
あんたは501,503にも及ばない単なる機械か石ころだな
定義を読んでるだけで、定義を理解したり、定義を作ったりしたことがないだろ
0530デフォルトの名無しさん
2016/07/20(水) 16:40:29.10ID:HQM16vFtモナドクラスとモナド則と数学は後で勉強しろ
この順序を間違えなければ理解できると思う
0531デフォルトの名無しさん
2016/07/21(木) 11:25:19.65ID:jJzdCE8w抽象化や情報隠蔽は時代に逆行している
0532デフォルトの名無しさん
2016/07/23(土) 05:36:08.80ID:zdmgkc+M0533デフォルトの名無しさん
2016/07/25(月) 12:51:34.33ID:IZp+OdY9build-depends に列挙されたパッケージが未インストールなら自動手にインストールされますが、
このとき、コマンドのオプションとして --haddock オプションを付ければライブラリドキュメントも構築されます。
わたしの場合は、パッケージのインストールの際はいつでもドキュメントも作られてほしいのですが、
毎回このオプションをつけるのは煩わしいです。
stack ではなく cabal だけでインストールやビルドしていたときは、
$HOME/.cabal/config ファイルの documentation を True にしておけば動的にドキュメントが作られました。
stack でも同じように自動的にドキュメントが作られるようにするにはどうすれば良いでしょうか。
0534デフォルトの名無しさん
2016/07/25(月) 15:07:37.73ID:0y8CzYDsに
build:
haddock: true
でできるように(我らがヒーロー)chrisdoneさんがしてくれたみたい。
0535デフォルトの名無しさん
2016/07/25(月) 20:43:22.58ID:IZp+OdY9ありがとうございます。
できました。
ところで、HsColour へのパスを通し忘れていたみたいで、
インストールされたライブラリドキュメントの各関数にソースへのリンクが張られていません。
stack でドキュメントを強制的に上書きで再インストールする方法はあるでしょうか。
0536デフォルトの名無しさん
2016/07/25(月) 22:52:02.75ID:0y8CzYDs調べたけど簡単な方法はわかんなかった。手で削除して一つ一つをリビルドするしかないのかも。
イマイチ自信がないから注意してほしいんだけど、例えばこんな風にやります...
まず、ドキュメントのインストール先を調べる。
$ stack path | grep "doc"
snapshot-doc-root: /path/to/snapshot/doc
local-doc-root: /path/to/local/doc
二つのディレクトリのどっちかに入ってるかわかったら、
例えばsnapshotの方なら、そのディレクトリの中身を削除する。
$ rm -rf `stack path --snapshot-doc-root`/*
その後でhaddockを再構築する。
$ stack exec -- ghc-pkg list --package-db=`stack path --snapshot-pkg-db` --simple-output | xargs -n 1 stack haddock
0537デフォルトの名無しさん
2016/07/27(水) 18:59:54.20ID:p304Zd6v念のためバックアップをとってから試しましたが、うまくできました。
今のところ特に問題は見つかっていません。
ありがとうございました。
0538デフォルトの名無しさん
2016/07/29(金) 23:39:42.61ID:MRKaDYWCHaskell Platform 2014.2.0.0で標準ライブラリだったのですが。
equal, new, unsafeWrite, run が使えなくて困っています
0539デフォルトの名無しさん
2016/07/30(土) 00:41:53.51ID:FdhqaNGktextパッケージの中にありますよ
https://hackage.haskell.org/package/text-1.2.2.1/docs/Data-Text-Array.html
0540デフォルトの名無しさん
2016/07/30(土) 01:08:24.92ID:e3eNfr/70541デフォルトの名無しさん
2016/08/06(土) 13:44:41.15ID:AFiBfwTx0542デフォルトの名無しさん
2016/08/10(水) 20:45:06.76ID:8Ulk+XDXこれか。日銀は9月会合のドラフトを作成しており、「総括」でも2%のインフレ目標は維持と。
ttp://www.reuters.com/article/us-japan-economy-boj-idUSKCN10L13A
0543デフォルトの名無しさん
2016/08/11(木) 18:25:10.90ID:3hGYSwfG0544デフォルトの名無しさん
2016/08/12(金) 00:39:34.68ID:XbNuNDlJ競プロでHaskell使う場合、競プロだとソースコード1ファイル提出が多いから
ソースコード内にBase Packageのライセンサーの名前を付記しておけばおk?
base: Basic libraries
http://hackage.haskell.org/package/base-4.9.0.0
http://hackage.haskell.org/package/base-4.9.0.0/src/LICENSE
0545デフォルトの名無しさん
2016/08/12(金) 00:43:24.62ID:XbNuNDlJ0546デフォルトの名無しさん
2016/08/12(金) 09:31:52.85ID:/Ub94szZ0547デフォルトの名無しさん
2016/08/12(金) 10:48:50.93ID:qPG51vYe0548デフォルトの名無しさん
2016/08/12(金) 13:29:05.81ID:Oo9jKYZj0549デフォルトの名無しさん
2016/08/12(金) 14:35:20.27ID:iSmX+r7lhttp://pc.2ch.net/tech/kako/1005/10056/1005635787.dat
1 名前: デフォルトの名無しさん 投稿日: 01/11/13 16:16
物理的なことは、分かるんです。
ただ、それをコンピュータで制御して事故が少ないというのが信じられない。
飛行機は、変なアセンブリや、いきなり機械語を埋め込むような言語で複雑な
制御プログラムを実装していると思う。
僕が書いたら絶対落ちる。
墜落しなくても、技術者が青ざめるようなことはしょっちゅうあるのでは?
飛行機を飛ばすプログラムなどに使用する言語や開発環境を教えて下さい。
僕を安心させて下さい。
0550デフォルトの名無しさん
2016/08/12(金) 15:48:38.47ID:1cmLpCrQなんじゃそりゃ?
0551デフォルトの名無しさん
2016/08/12(金) 16:24:22.98ID:paDve3zkいや、いろんなモナドがどういう動きをするのか見てたら処理の終わりや処理の途中になんかあった場合次の別の処理に移る所(パイプライン処理)で割り込んでるようなイメージになったからさ
その命令と命令の間で割り込めるような構造がモナドなのかと思ったんだ
0552デフォルトの名無しさん
2016/08/12(金) 19:09:27.06ID:IYlYCot40553デフォルトの名無しさん
2016/08/12(金) 19:45:45.80ID:Dvu9s0yY0554デフォルトの名無しさん
2016/08/12(金) 20:36:30.59ID:wGlcEeY2モナドのそういう雰囲気は、プログラマブルセミコロン、といわれてる。
リストモナドやMaybeモナドの定義も見てみると、もっと理解が深まるよ。
0555デフォルトの名無しさん
2016/08/12(金) 20:44:57.35ID:/Ub94szZこれをもっと発展させて一般的に順序を指定するノウハウはないか? →だったらモナドというものがありますよ→『お、いいですね、これ採用しましょう』と決まっただけ
0556デフォルトの名無しさん
2016/08/12(金) 21:00:00.37ID:Dvu9s0yY0557デフォルトの名無しさん
2016/08/12(金) 21:02:45.97ID:IYlYCot40558デフォルトの名無しさん
2016/08/12(金) 21:15:11.37ID:/Ub94szZ↓
それでは実用的ではないと思うのですが、だって途中で色々とその時点での成果物に依存した次の準備などで、別の製品を造りたいこともあるではないですか。あまりに不自由だ
↓
そのためにはそれ専用の製造ラインを別モナドとして定義して、それをdoの途中に(オフサイドラインの)行頭letで呼び出して、テーマとなっている製造ラインの途中へと流し込みます。流し込めるのは『支流モナド』ではなく『支流モナドに因る成果物』のみです(それをテーマの製造ライン用に再パックし合流する)。このようにして、テーマとなっているモナドの型はテーマのまま変わらないようにします。
ちなみに、そのletでついでに一時定数を定義して便利に使うこともできます。別の行にオフサイドルールに則って(let hoge = 〜の次の行ならhの列に)書きましょう。毎行letを書く必要はありません。
テーマのモナドに戻る時はこれまでのテーマのモナドのオフサイドラインに則って復帰するだけです。この場合inは書きません
0559デフォルトの名無しさん
2016/08/12(金) 21:24:18.19ID:/Ub94szZnanika <- 〜
と書くなら
右側はSomeMonad a型、左側はそのモナドを引っ剥がした 単なる a 型となるよう、右側を適宜returnを補って再パックしたり、SomeMonad a型関数ならそのまま書くだけなどして、型(帳尻)合わせをする。
nanikaは以降の行から関数の終わりまで便利に使える
こんだけ覚えておけば理解はともかく満足に使えるでしょ
以上、Haskell初日用モナド講座でした
0560デフォルトの名無しさん
2016/08/12(金) 21:51:32.23ID:IYlYCot40561デフォルトの名無しさん
2016/08/13(土) 01:01:04.83ID:PKPsUiHo0562デフォルトの名無しさん
2016/08/13(土) 04:07:58.01ID:wqMXG7Q2全部関数ベタ書きで組め
0563デフォルトの名無しさん
2016/08/13(土) 06:04:58.95ID:0So+hZJu0564デフォルトの名無しさん
2016/08/14(日) 23:39:04.78ID:748AhGSv0565デフォルトの名無しさん
2016/08/15(月) 15:37:14.16ID:PzfQQs3h全部リストで実装できるの?
0566デフォルトの名無しさん
2016/08/15(月) 15:59:46.77ID:HKYH1nb5型構成子って type contructor のこと?
実装とは?
0567デフォルトの名無しさん
2016/08/15(月) 16:08:31.81ID:HKYH1nb5すまん、type constructor の事かと訊きたかった。
もしそうなら、リストとの関係は特に語ることもないよ。
type synonym において、type a のリストの type construcor を [a] と記述する構文規則になっている、ただそれだけ。
たぶん、こういう事が訊きたかったのでは無いんだらうなとは思うが、
>>565 の質問文からはこれくらいしか読み取れなかった。
0568デフォルトの名無しさん
2016/08/15(月) 16:13:33.96ID:HKYH1nb5すまん、グダグダだな。
type synonym じゃなくて type signature ね。
あと、実装は何の実装の話か、具体例か何かあると、
もしかしたらもっと適切なレスができるかも。
0569デフォルトの名無しさん
2016/08/15(月) 18:31:50.83ID:PzfQQs3hこっちこそすまん。あんまり言葉を知らない初心者なもんで。
つまり、Lispのリストのような基本的データ構造さえ使えれば、
List Int やMaybe Intなどをはじめとするどんな型の値もそれで表せる?という質問だった。
たとえば、List Int は、(5 3 8)のようなリストそのものだし、
Maybe Intの場合も、Just 3は(1 3)、Nothingは(0 0)とでも表せばよい。
0570デフォルトの名無しさん
2016/08/16(火) 00:17:48.81ID:iBBRIQ7/× ('Nothing 0) Nothingに値は無い
('List 5 ('List 3 ('List 8 'ListEnd)))
× (5 . (3 . (8 . nil))) ではない
0571デフォルトの名無しさん
2016/08/16(火) 00:18:43.70ID:iBBRIQ7/* + うそです
n ∧_∧ n
+ (ヨ(* ´∀`)E)
Y Y *
0572デフォルトの名無しさん
2016/08/16(火) 00:19:43.84ID:OAKxpV6YADTを拡張された列挙体だとみなせば(非効率的だが)それでもいいかもな
LispでHindley-Milnerシステムを再現できるのはそのとおりだけど
それやるとLisp特有の柔軟性は利用できなくなるんで嬉しくないだろう
0573デフォルトの名無しさん
2016/08/17(水) 01:21:33.15ID:8bFWGPCIエラー処理を書いてはいけない | Preferred Research
https://research.preferred.jp/2011/12/do-not-write-error-handling/
このエラー処理のモナドの話よかった
0574デフォルトの名無しさん
2016/08/17(水) 01:25:29.93ID:8bFWGPCItanakhの顔アップはこれくらいか
0575デフォルトの名無しさん
2016/08/17(水) 05:51:08.75ID:uZCC+Xy40576デフォルトの名無しさん
2016/08/17(水) 07:04:18.49ID:Hoxqu598その方はユダヤ教なんですか?
0577デフォルトの名無しさん
2016/08/18(木) 07:50:04.15ID:9dlOey3Kttps://www.humblebundle.com/books/joy-of-coding-book-bundle
生のすごいHが1$ポッキリ!
0578デフォルトの名無しさん
2016/08/18(木) 22:48:38.98ID:q+6z/vcz0579デフォルトの名無しさん
2016/08/20(土) 18:59:40.68ID:M5pz0luK0580デフォルトの名無しさん
2016/08/24(水) 20:17:15.35ID:3ozWkhy2何が返ってくるかを表す名詞にするよう、できるだけ心掛けましょう。
sine(sin)やcosine(cos)、integral(∫)もみんな名詞でしょ。
0581デフォルトの名無しさん
2016/08/24(水) 22:57:48.92ID:ZIV2jGBM0582デフォルトの名無しさん
2016/08/24(水) 23:07:00.48ID:nZ9rDf/Lそもそもそんなクソダサ言語を使うのが誤りなのかもしれない。
0583デフォルトの名無しさん
2016/08/25(木) 01:36:22.04ID:qf1gHttbx-ray (レントゲンを撮る)
0584デフォルトの名無しさん
2016/08/25(木) 02:59:55.26ID:B4Y+gpApどうして動詞より名詞の方がいいの? 純粋に理由が知りたい。
0585デフォルトの名無しさん
2016/08/25(木) 07:18:14.68ID:HhsagtWk英語は「文法上動詞と解釈するしかない位置にある(名詞っぽい)単語」は
形を全く変えずに動詞として振る舞えるからなあ
…書いてて気づいたけど、逆に英語の動詞を日本語に輸入するときに
「ゲットする」みたいに「"get"を名詞化してしまう」から
その辺ごちゃごちゃにしてしまいやすいのかもしれん
>>584
手続き型やオブジェクト指向では規約として動詞で命名するようにしてたりするから
その癖に引きずられないで宣言的に書けってことじゃないかな
HaskellでもIOモナドの中ではgetArgsとか使うけど
0586デフォルトの名無しさん
2016/08/25(木) 07:32:10.06ID:DDCLwde4機械に命令するのは難しい
動詞をなくせば命令もなくなる
0587デフォルトの名無しさん
2016/08/25(木) 08:51:48.04ID:Odt+sGM4Data.List の中見てみればいいのにw
0588デフォルトの名無しさん
2016/08/25(木) 12:27:25.18ID:43//jAtH英語の文章を書くときには主語が必要
すると、文書が I とか特定の主語で始まる文章ばっかりになって気持ち悪くなる
小学生がはじめて書く作文みたいに、同じ形の文章をならべるような感じで幼稚な印象をかもしだす
ゆえに、文章にバリエーションを持たせるために主語に使えるような名詞化が必須となった
0589デフォルトの名無しさん
2016/08/26(金) 18:04:25.83ID:Rls1Ch1+計算結果は分からない
停止性問題も分からない
分からないが停止するものとして名詞化するべきか?
0590デフォルトの名無しさん
2016/08/26(金) 18:57:07.43ID:6PjBnIB5難儀な性格だね
0591デフォルトの名無しさん
2016/08/27(土) 03:17:26.65ID:D0iquWDS↑これって日本語訳ありますか?(機械翻訳だとわけ分からないので)
https://wiki.haskell.org/99_questions
↑ここにあったいくつかのコード例が便利そうだったのでコピペして使いたいなと思ったんですけど
wikiの利用許諾がよく分からなかったので
0592デフォルトの名無しさん
2016/08/27(土) 10:45:30.25ID:1nMCeYUKA simple permissive lisenceってあるけどそのものズバリなのは見つけられないな…
MITライセンス(X11 License)から著作権表示義務を取っ払った文面に読める
MIT License - Wikipedia
https://ja.wikipedia.org/wiki/MIT_License
0593デフォルトの名無しさん
2016/08/27(土) 13:40:00.11ID:I3O+iqpodata T = D1 | D2 | ・・・
ここで、この型の定義時に deriving Show とすると Show 型クラスのインスタンタンスとなり、
show 関数の定義が自動的になされます。
しかし、一部の値構築子に対する show 関数のみ独自の定義を行いたいです。
(他の値構築子に対する show 関数の定義は deriving で行われるもので良い)
このような場合、deriving Show の宣言を止めて明示的に Show 型クラスのインスタンスを宣言し、
全ての値構築子に対する show 関数の定義を自身で行わなければならないのでしょうか。
0594デフォルトの名無しさん
2016/08/28(日) 00:19:57.40ID:b0M2+B18高くても買う気概を見せるべき
0595デフォルトの名無しさん
2016/08/28(日) 21:12:57.37ID:GgbWiPIxあまり綺麗な解決策はないっぽいです
http://stackoverflow.com/questions/28665917/accessing-the-default-show-in-haskell
あとは、deriving Show したものをEither で取り込む、って手もありますが、パターンマッチも合わせなくちゃならない面倒臭さがあります。
0596デフォルトの名無しさん
2016/08/28(日) 21:51:38.94ID:dFRMemTFありがとうございます。
理解できました。
0597デフォルトの名無しさん
2016/08/31(水) 22:45:44.30ID:Rs0xiE9q盛り上がるのは日本だけ
0598デフォルトの名無しさん
2016/08/31(水) 23:10:06.77ID:7+q3lg650599デフォルトの名無しさん
2016/09/01(木) 02:28:23.81ID:egT8bscRErlangやSQLがLispに似てないのと同じ
0600デフォルトの名無しさん
2016/09/01(木) 03:05:36.49ID:CJsgpLVH0601デフォルトの名無しさん
2016/09/01(木) 05:41:39.78ID:egT8bscR梃子でも動かないこと
逆に行動力がありすぎて過激化すること
0602デフォルトの名無しさん
2016/09/01(木) 06:09:39.50ID:RBx6umGohttp://postd.cc/haskell-in-a-startup/
0603デフォルトの名無しさん
2016/09/01(木) 13:23:13.03ID:CJsgpLVH0604デフォルトの名無しさん
2016/09/01(木) 19:30:56.51ID:mPgGDrHC0605デフォルトの名無しさん
2016/09/01(木) 21:18:32.08ID:VCwOTBrDsubparser で「コマンド名を何も指定していない場合には実行するパーサー」を指定することはできないのかな?
subparser (command "" あるParserInfo <> command "cmd1" 別のParserInfo)
として、シェルで
$ アプリ名 オプション 引数
って実行しようとしてもエラー扱いされる。
(当然、アプリ名 cmd1 オプション 引数 ってやると別のParserInfoが実行される)
これができれば、今のところコマンドラインパーサーとしては最高なんだが・・・
0606デフォルトの名無しさん
2016/09/02(金) 07:35:27.77ID:D4RF+Hn1福音派
0607デフォルトの名無しさん
2016/09/02(金) 20:10:33.97ID:rbAQHi/g演算子を何も指定していない場合の二項演算
0608デフォルトの名無しさん
2016/09/02(金) 21:56:11.68ID:tVbN57IV0609デフォルトの名無しさん
2016/09/03(土) 21:14:38.25ID:b3XfDx+y$ が単項演算子を左側の引数に持つ二項演算子で、f x と結果が同じになるように f $ x を計算しているのではなかろうか
0610デフォルトの名無しさん
2016/09/03(土) 21:20:32.77ID:I4+juosu0611デフォルトの名無しさん
2016/09/04(日) 08:23:55.62ID:hJ0oY1hgいずれにしても人格や心理を知ればあらゆる現象を解明できるという風潮がある
シンギュラリティに到達すれば機械も心を持つようになるんだろう
0612デフォルトの名無しさん
2016/09/06(火) 05:47:19.29ID:B6IsI2Puでも機械には心がないから操作できない
とんでもない機械音痴の香りがする
0613デフォルトの名無しさん
2016/09/06(火) 06:43:44.20ID:hM0tgfmY0614591
2016/09/07(水) 00:30:17.49ID:9tlIzaE9ありがとうございます
diffを取ったらたしかにそのようでした
0615デフォルトの名無しさん
2016/09/09(金) 17:59:57.99ID:fugQoxX/スタックマシンで考えると関数は一旦スタックに置いてから呼び出すから演算子と違う
0616デフォルトの名無しさん
2016/09/09(金) 20:07:49.45ID:EXJ63xavlispの場合、例えば+なら、+という名前の関数って解釈になると思うんだけど
原則
(関数名 引数1 引数2…)
っていう規則だし
0617デフォルトの名無しさん
2016/09/10(土) 12:57:03.05ID:0lecj7oS単項演算子(前置または後置記法)も欲しいけど
0618デフォルトの名無しさん
2016/09/10(土) 22:31:13.20ID:kdc6/nN6foldr 前置 0 == foldr ((前置) 0)
foldr 中置 0 == ((中置) foldr) 0
foldr 後置 0 == ((後置) foldr) 0
0619デフォルトの名無しさん
2016/09/17(土) 01:19:31.32ID:TryWX1hA標準入出力の実装とか、実行ファイルの場所について知ってたら情報教えてください
0620デフォルトの名無しさん
2016/09/17(土) 18:11:26.87ID:/utKPaV2ライブラリドキュメントの初心者突き放し感凄い
0621デフォルトの名無しさん
2016/09/17(土) 22:30:13.53ID:xGaWkelzそんな事より、関数の性質を過不足なくシンプルに記述されていることの方が遥かに重要。
使い方を調べるものではなく、性質を調べるもの。
初心者かどうかに関わらず、使い方を学ぶなら別途解説記事などを当たる方が効率的。
(そもそも、初心者に優しいライブラリドキュメントは、圧倒的多数の非初心者にとっては使いにくい)
0622デフォルトの名無しさん
2016/09/18(日) 11:54:17.60ID:+SKZ6S2R0623デフォルトの名無しさん
2016/09/18(日) 13:03:29.53ID:8TOAmXme0624デフォルトの名無しさん
2016/09/18(日) 17:17:22.23ID:+SKZ6S2Rただし型を明示する方がより難しく感じる
0625デフォルトの名無しさん
2016/09/19(月) 19:30:07.86ID:80/BHnqI(take n . iterate)M = replicateM?
0626デフォルトの名無しさん
2016/09/19(月) 19:38:52.37ID:80/BHnqIロギングしながら内部状態を更新して計算するという、手続き型では当たり前にやっていたことでもHaskellでやるには色々と難儀するなあと思いました
最後に剥がして剥がさないとだしね
0627デフォルトの名無しさん
2016/09/19(月) 19:51:08.46ID:80/BHnqIMatzとmattnくらいごっちゃになる
0628デフォルトの名無しさん
2016/09/21(水) 10:03:06.97ID:sEEtOe1C0629デフォルトの名無しさん
2016/09/21(水) 17:44:02.16ID:4XZnLpLbコードがコア言語に翻訳されたときにどうなるかくらい見たことあるだろ普通
0630デフォルトの名無しさん
2016/09/21(水) 19:50:55.97ID:aYh3Hfoxべつに反発する訳ではないが、見たことない人の方が圧倒的に多いと俺は思うよ。
core言語をネタにした記事や議論があまりに少ない。
入門書には載ってないし、core言語の存在に気づく機会なんてそうそう無いんじゃないかな。
知らなくても殆どのアプリケーションは問題なく作れるしね。
0631デフォルトの名無しさん
2016/09/21(水) 22:12:06.22ID:MOB6yruj最初にテストで作ったパッケージとかもういらないやつ
0632デフォルトの名無しさん
2016/09/22(木) 20:46:54.69ID:qTs7iGpBrm -rf ~/.stack; stack setup; stack build
0633デフォルトの名無しさん
2016/09/22(木) 21:24:33.81ID:AFCrOFUMありがとう、設定全部消してやり直す感じかな
消すプロジェクト選べないのかな
ていうかWindowsの環境だと
C:\sr\
が ~/.stack に相当するのであってる?
0634デフォルトの名無しさん
2016/09/22(木) 23:46:45.84ID:jxKSBn/V0635デフォルトの名無しさん
2016/09/23(金) 00:10:47.32ID:WXiot49wだからこそモナド則満たしてないとかいうバグが長いこと……
0636デフォルトの名無しさん
2016/09/23(金) 01:33:27.63ID:z/oo94n50637デフォルトの名無しさん
2016/10/05(水) 23:54:20.53ID:vyqM/RAHHaskellの遅延評価や遅延リストはどのようにしてスレッドセーフを担保しているのでしょうか
0638デフォルトの名無しさん
2016/10/06(木) 01:49:51.26ID:4VyQcH0mソース読む気ないけど、もし参照が危険でコピーが安全だったらコピーするよね普通
0639デフォルトの名無しさん
2016/10/06(木) 19:18:03.78ID:q3HZYpQ2STMを使ってください
0640デフォルトの名無しさん
2016/10/07(金) 14:53:50.98ID:35BCHO2EつまりSTMを使わないと
b = 25
a = 100 + b
という感じで定義されてる未評価の関数aを2つのスレッドから同時に参照と評価があった場合、それぞれで100 + bが実行されるということですか?
0641デフォルトの名無しさん
2016/10/07(金) 18:24:20.29ID:jSZrN4yw誰かが最初に遅延評価したときに演算され、二番手以降の方へは計算済みの値を格納したポインタを教えるイメージです
0642デフォルトの名無しさん
2016/10/10(月) 14:27:31.41ID:Qm2ONX6IParsecとか使えはするようになってきたんだけど、もっとすっきり書けそうとか効率が悪そうとか色々あって
0643デフォルトの名無しさん
2016/10/10(月) 15:50:46.27ID:HAEgy7t10644デフォルトの名無しさん
2016/10/10(月) 19:52:56.68ID:3rNLKIcDhttps://en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours
0645デフォルトの名無しさん
2016/10/10(月) 21:35:10.06ID:R1xgz6YK0646デフォルトの名無しさん
2016/10/11(火) 16:18:02.29ID:sSjTKHHD0647デフォルトの名無しさん
2016/10/26(水) 04:19:58.71ID:bWo+/2EQ0648デフォルトの名無しさん
2016/10/27(木) 08:06:57.18ID:Nn5hsSbo勉強になっていいなぁ
0649デフォルトの名無しさん
2016/10/28(金) 00:12:41.03ID:8f+wXH5p0650デフォルトの名無しさん
2016/10/28(金) 21:15:42.28ID:ostPWI1AHaskellに乗せるにはまた一工夫必要だったりしてそこもまた勉強になるんだなあ
0651デフォルトの名無しさん
2016/10/29(土) 16:01:30.61ID:U0STMpMq0652デフォルトの名無しさん
2016/10/29(土) 18:54:57.37ID:iE/CgPi00653デフォルトの名無しさん
2016/10/30(日) 02:15:50.28ID:jfOgw9BV0654デフォルトの名無しさん
2016/11/01(火) 15:38:33.33ID:663+8MTa0655デフォルトの名無しさん
2016/11/01(火) 17:13:14.84ID:vtMJ+WVh0656デフォルトの名無しさん
2016/11/02(水) 08:25:24.44ID:Hcp22mKX0657デフォルトの名無しさん
2016/11/02(水) 11:10:02.14ID:9HnuVJlnでもそれはC++のパラダイムと同じ
参照透明性の概念はなくならないが、C++に対抗するパラダイムはなくなっている
0658デフォルトの名無しさん
2016/11/02(水) 16:53:59.16ID:Zl1DvHRz0659デフォルトの名無しさん
2016/11/02(水) 17:44:16.13ID:9HnuVJln型クラスのせいでファーストクラスの関数にこだわらなくなった
Monadが異常に人気なのでArrowのような関数の合成はしないっていうかArrowって何?
0660デフォルトの名無しさん
2016/11/03(木) 18:35:59.15ID:VYss1+Sd0661デフォルトの名無しさん
2016/11/03(木) 21:25:05.49ID:/bqrYTe/ゼロを含まないように扱えばいいのでは?
例えばそういう型を IntNZ として、減算 (-) :: IntNZ -> IntNZ -> IntNZ の定義において
ふたつの引数が等しければ例外を投げるとか。
そう言うことを訊いているのではない?
0662デフォルトの名無しさん
2016/11/03(木) 23:32:58.43ID:VYss1+Sd0663デフォルトの名無しさん
2016/11/03(木) 23:40:49.26ID:4HccfDPtdiv x ∞ = 0
mod x ∞ = x
0664デフォルトの名無しさん
2016/11/04(金) 08:34:02.77ID:kXeFO5vLパターンマッチで[0..]をいちいち取り除くのが面倒だから駄目か。。。
難しいな
0665デフォルトの名無しさん
2016/11/04(金) 09:50:12.79ID:1tddSSBg前者は客観的かもしれないが後者は個人の感想です
0666デフォルトの名無しさん
2016/11/04(金) 11:18:01.53ID:XfkYN6aF0667デフォルトの名無しさん
2016/11/04(金) 23:38:57.96ID:6gj2sDdxそうじゃなくて、IntNZ 型を Num 型クラスのインスタンスにして、
その (-) 関数の定義の中で error 関数を使おうよ。
数値リテラルでの 0 の代入を構文的に防ぐのは(今はたぶん)無理だから、
せめて fromInteger 関数の定義で、0 が来たら error 関数を呼ぶ。
0668デフォルトの名無しさん
2016/11/05(土) 12:18:19.28ID:e+VJvV43ありがとうございました。
よく分かりました。
0669デフォルトの名無しさん
2016/11/06(日) 12:37:50.95ID:ii2PuHlB0670デフォルトの名無しさん
2016/11/06(日) 13:08:58.54ID:73fM5cAV0671デフォルトの名無しさん
2016/11/06(日) 14:38:22.75ID:9AHrFYuDhead なんかも普通に例外飛ばしてるじゃん。
0672デフォルトの名無しさん
2016/11/06(日) 16:45:16.15ID:aqA72S6k0673デフォルトの名無しさん
2016/11/06(日) 17:09:40.29ID:0EN6rm+O「0が入力だとエラーだからここは非0の整数だ」
とか自動で推論してほしいのよ
0674デフォルトの名無しさん
2016/11/06(日) 17:57:14.05ID:ii2PuHlBだから head すごく嫌われてるじゃん
パターンマッチ使って exhaustiveness 検査できるように書くのが基本でしょ
0675デフォルトの名無しさん
2016/11/06(日) 20:13:26.92ID:8krBF8e8head :: NonEmpty a -> a
https://hackage.haskell.org/package/base-4.9.0.0/docs/Data-List-NonEmpty.html
0676デフォルトの名無しさん
2016/11/06(日) 21:06:27.67ID:9AHrFYuD非空リスト型に空リストが入らないようにするとか、
そういうのを静的に保証することは無理でしょ。
NonEmpty a だって普通のリストからこの型に変換するときは、
空リストに対して例外を飛ばしたり、Nothing にしてるし。
0677デフォルトの名無しさん
2016/11/06(日) 22:55:12.61ID:aqA72S6k前提条件のもとに安心してコーディングしたい
場合分けが増えるほど最適化への意欲が殺がれる
0678デフォルトの名無しさん
2016/11/07(月) 01:13:01.98ID:MDpsc3Qw0679デフォルトの名無しさん
2016/11/07(月) 02:46:36.93ID:5LzIlCQF0680デフォルトの名無しさん
2016/11/07(月) 04:57:48.34ID:V9YWDh5g0681デフォルトの名無しさん
2016/11/07(月) 09:11:09.12ID:vESUnDI+0682デフォルトの名無しさん
2016/11/07(月) 09:29:48.12ID:RQbqk0B/0683デフォルトの名無しさん
2016/11/07(月) 13:16:49.97ID:sGTieyCj普通の加法は定義できないな
0684デフォルトの名無しさん
2016/11/07(月) 15:30:07.60ID:57Eo3JNh分母は足し算しないよ
0685デフォルトの名無しさん
2016/11/07(月) 22:28:56.92ID:mwzncyNqいちいち return (Left ・・・) と書かずに failure ・・・ みたいに書ける関数が、
標準ライブラリに定義されていたような気がするんだが、なんて名前の関数だっけ?
こんなもん無きゃ自作すればいい話だが、あるもんは使いたい。
0686デフォルトの名無しさん
2016/11/07(月) 23:36:36.14ID:R79oO133ゼロを含めてしまうと、それの逆元は存在しないので、群とはなりません。
0687デフォルトの名無しさん
2016/11/07(月) 23:43:07.92ID:vESUnDI+0688デフォルトの名無しさん
2016/11/07(月) 23:47:00.99ID:vESUnDI+1と-1は自分自身が乗法の逆元だけどほかは、って話ね
0689デフォルトの名無しさん
2016/11/08(火) 02:20:51.88ID:bNPBs65+零元を除いたときに掛け算が群になるものは体と呼ばれる
有理数体とかあるいは有限体を持ってくる必要がある
整数環は体ではないのでゼロを除くだけでは不十分
元の話に戻ると、例えば整数が偶数か奇数かで場合分けするときに
「偶数整数の型」とか「奇数整数の型」とかを作らないように、
これも型でやるのは面倒なんじゃないかなやっぱり
0690デフォルトの名無しさん
2016/11/08(火) 05:23:36.77ID:yAny1aGl0691デフォルトの名無しさん
2016/11/08(火) 08:59:08.74ID:85Jh4l0o0692デフォルトの名無しさん
2016/11/08(火) 11:20:00.20ID:V/aB9qViコンパイル時の技術はその後から遅れて追いかける形
0693デフォルトの名無しさん
2016/11/08(火) 13:39:05.19ID:rvD8rxF+0694デフォルトの名無しさん
2016/11/08(火) 14:42:51.000695デフォルトの名無しさん
2016/11/08(火) 17:55:13.90ID:S8iuzxu8マジかよ
やべえ
0696デフォルトの名無しさん
2016/11/09(水) 01:44:56.08ID:ybkPv5oAhttps://hackage.haskell.org/package/base-4.8.0.0/docs/Numeric-Natural.html
0697デフォルトの名無しさん
2016/11/09(水) 17:39:29.39ID:vRs11tEL引数型からどのコンテナのinsertか特定できそうな気がするけど…
0698デフォルトの名無しさん
2016/11/09(水) 19:09:09.55ID:zLgA6zWO0699デフォルトの名無しさん
2016/11/09(水) 21:14:16.95ID:xmqlrnlxモナドがデザインパターン的な??
0700デフォルトの名無しさん
2016/11/09(水) 21:51:44.32ID:oiz7Hd4Lhttp://fumieval.hatenablog.com/entry/2015/03/08/214505
>デザインパターンを作らないこと。型とクラスがあんたの武器だ。
0701デフォルトの名無しさん
2016/11/09(水) 22:06:42.64ID:GQTXnFNK関数型はざっくりしてる
モナド1個だけでデザインパターン20個分くらい
0702デフォルトの名無しさん
2016/11/09(水) 22:37:40.72ID:xmqlrnlx0703デフォルトの名無しさん
2016/11/09(水) 23:09:37.80ID:U1jagGrC0704デフォルトの名無しさん
2016/11/10(木) 22:10:21.82ID:95rHCbYq0705デフォルトの名無しさん
2016/11/10(木) 23:06:29.06ID:iSDVog9Lttps://www.youtube.com/watch?v=E8I19uA-wGY#t=3m40s
0706デフォルトの名無しさん
2016/11/11(金) 00:34:43.63ID:5BtLg1Wc0707デフォルトの名無しさん
2016/11/11(金) 10:54:47.33ID:dScdKx6pデザパタはパターンをライブラリに落とせない貧弱な言語に必要なバッドノウハウ。
0708デフォルトの名無しさん
2016/11/11(金) 15:35:23.910709デフォルトの名無しさん
2016/11/11(金) 17:31:31.65ID:w3bRsN0z過激なtemplateで知られるC++を理解できるのは一部の超能力者だけ
0710デフォルトの名無しさん
2016/11/11(金) 21:09:46.66ID:DJ7KM1aB早口で分からん
英会話教室に通おうかな
0711デフォルトの名無しさん
2016/11/11(金) 22:01:49.23ID:vuUaX9380712デフォルトの名無しさん
2016/11/11(金) 23:20:52.52ID:dPj3pCz/0713デフォルトの名無しさん
2016/11/12(土) 00:08:16.99ID:58llZ1kJそれで十分理解できる人はいっぱい居るだろうけど、俺は無理。
やっぱり、人の話をちゃんと聞きたい。
0715デフォルトの名無しさん
2016/11/12(土) 01:09:21.72ID:hHeNYjQy0716デフォルトの名無しさん
2016/11/12(土) 02:30:50.020717デフォルトの名無しさん
2016/11/12(土) 07:49:28.15ID:TT9Tnb2q0718デフォルトの名無しさん
2016/11/12(土) 07:50:00.87ID:TT9Tnb2q0719デフォルトの名無しさん
2016/11/12(土) 13:14:11.47ID:1NFet2E2{ という懐かしい記号が目に入ってそっ閉じ。{}だらけの言語を見ると目が腐る。
0720デフォルトの名無しさん
2016/11/12(土) 15:53:23.54ID:YgVHUwqy今年は参加者が40チームを超えて大盛況だったと聞いたので
Haskell使ったソフトは何位くらいに入ってるのかなと調べてみたら...
http://i.imgur.com/0NCgWgU.jpg
0721デフォルトの名無しさん
2016/11/13(日) 00:36:31.31ID:25DJAejCHaskellの恥とか言われてるぞ
0722デフォルトの名無しさん
2016/11/13(日) 00:39:45.43ID:GDVX8Ikh0723デフォルトの名無しさん
2016/11/13(日) 02:02:28.39ID:yW2Hc/df平凡な言語で優秀な人間のコードをコピペした方が機能するという現実。
更に言えばコピペ出来ないという事は比較も出来ないから
自分は優れたコードを書ける方だという勘違いも生まれやすい二重苦。
0724デフォルトの名無しさん
2016/11/13(日) 08:01:48.99ID:NWcxEYYnHaskellはコンパイルと実行ができるから少しマシになったといえる
0725デフォルトの名無しさん
2016/11/13(日) 18:00:33.55ID:9x+ozG+iBool 型のフィールドの名前に is〜 って付けにくいよね。
たとえば
data Command = Command { cmdSpecial ::Bool, ・・・ }
本当は isSpecial と命名したいんだけど、他の代数データ型のフィールドと区別したいから、
何かしら接頭辞をつけたい。
isSpecialCmd だと英語的にピッタリだけど、このフィールドだけ cmd を接尾するのも統一感ない。
(他の Bool 型以外のフィールド名は cmd を接尾すると明らかにおかしい)
ホント悩ましいよね。
今は is を諦めて、代わりに switch(または略して swch)を接尾してるけど、
一般的じゃないし、なかなか慣れない。
0726デフォルトの名無しさん
2016/11/13(日) 18:26:24.65ID:cTxZaG78そうやって順位が低かったからって
一生懸命参加したHaskellerを嘲笑するのはやめようよ
0727デフォルトの名無しさん
2016/11/13(日) 18:32:14.30ID:cTxZaG78こういうの見せられると
Haskellの勉強時間をC++に充てた方が良かったのではとか考えだして萎えるね
0728デフォルトの名無しさん
2016/11/13(日) 19:01:53.33ID:ajsybu9G0729デフォルトの名無しさん
2016/11/13(日) 19:05:46.97ID:lXuVu+Qu実装言語にこだわる理由が分からん
実装がHaskellじゃなきゃいけない理由はない
0730デフォルトの名無しさん
2016/11/13(日) 21:57:57.24ID:ile6jKYv我々が直接書く機会は少なく
どちらかといえば、開発中のソフト固有といえる部分を書いていくことになるわけだが
そのとき関数型が役に立つのかどうか、ってことだな
もしくは何かアルゴリズム的なことをガッツリ書かなければならない状況であれば
それはそれでハードウェア構成に最適化されたプログラミングが要求されるであろう場面なので
現状ではC/C++が妥当と言えるかもしれない
将棋プログラムが良い例で、早く動かす必要があるのでC/C++が最適なんだろうな
0731デフォルトの名無しさん
2016/11/14(月) 13:13:53.00ID:WhzDU3qv関数型プログラミングの達人がいないのね
それか将棋などの下世話なものには興味を引かないのか
0732デフォルトの名無しさん
2016/11/14(月) 13:54:24.67ID:v/crCO1Q0733デフォルトの名無しさん
2016/11/14(月) 14:55:08.33ID:zPFRwjsR0734デフォルトの名無しさん
2016/11/14(月) 15:04:55.99ID:pQSv0pIq0735デフォルトの名無しさん
2016/11/14(月) 15:14:45.15ID:9+pPztYNdo記法だらけで何の為にHaskell使ってるのか分からなくなりそう
一見簡単そうに見えるけど
関数型の特徴を活かした書き方をしようとしたら
相当な知識と発想力が必要でしょ実際
0736デフォルトの名無しさん
2016/11/14(月) 19:30:04.71ID:vwfd0FeEセーブデータが言語非依存だった場合Haskellを選ぶ理由が特にない
0737デフォルトの名無しさん
2016/11/15(火) 00:21:14.15ID:TrWdoi2+定義書けばいいんだから
ただそれだと大抵オーダーレベルで遅いからチューニングしてくんだけど
珠玉のアルゴリズムデサインとか眺めてると
関数型のパフォーマンス・チューニングは
とても素人が手を出せるものではないなと感じる
0738デフォルトの名無しさん
2016/11/15(火) 00:35:21.17ID:zFHvDTCz0739デフォルトの名無しさん
2016/11/15(火) 01:04:34.79ID:fGk3f/So0740デフォルトの名無しさん
2016/11/15(火) 08:56:11.16ID:PldPJ2O3副作用はむしろ自然であるといえるしね
0741デフォルトの名無しさん
2016/11/15(火) 12:12:21.76ID:fGk3f/So本当か嘘かを第一に考えたい
0742デフォルトの名無しさん
2016/11/15(火) 14:19:44.060743デフォルトの名無しさん
2016/11/15(火) 17:29:54.42ID:rLEFKtBYこれのminimalにもstackあるからこれでいいの?
ユーザー\appdata\Roaming\local\binとか変なところにあるけど
tanakahとかstack紹介記事書いてるやつはわかりにくいから反省しろ
それかnewbieおことわり宣言しろ
知ってるやつだけ使えばええやろ
0744デフォルトの名無しさん
2016/11/15(火) 18:37:27.88ID:zXTJ3mIvこれ以上ないくらい分かりやすいでしょ。
とはいえ日本の熟練Haskellerって
ツールや開発環境の紹介といった布教行為には熱心だけど
具体的なコーディングテクニックの紹介記事を書いてくれる事って滅多にないよね。
この勧誘だけは熱心だけど
入信後にはアフターケアしない文化が
将棋ソフト作ったHaskellerゼロの遠因になってる気がする。
0745デフォルトの名無しさん
2016/11/15(火) 20:03:27.81ID:DS7sAygo布教活動は選ばれし者を発掘するためなのだ
0746デフォルトの名無しさん
2016/11/15(火) 20:36:23.03ID:Smv2PVR1言語そのものではなくて使いこなせる自分たちが凄いと言ってるみたいだし
0747デフォルトの名無しさん
2016/11/15(火) 21:12:04.44ID:7+Tk3atX0748デフォルトの名無しさん
2016/11/15(火) 21:12:48.41ID:Ul7hyJV80749デフォルトの名無しさん
2016/11/15(火) 22:32:33.04ID:TrWdoi2+8.0になってstack入ったから今はplatformの方でいいと認識している(嘘言ってたらすまん)
0750デフォルトの名無しさん
2016/11/15(火) 22:49:14.61つまりRubyが悪いんじゃなくてRubyプログラマが鼻につくのがPythonに敗れた理由だと
0751デフォルトの名無しさん
2016/11/15(火) 22:52:19.64ID:9/lrpTSTHaskellで扱いやすくなる。
バージョンを要素とする集合に代数的構造を見いだしたから Darcs が生まれた。
構文解析の状態を要素とする集合に代数的構造を見いだしたから Parsec が生まれた。
将棋も何かしらの集合に代数的構造を見いだせば Haskell の利点が生かせる。
ただその利点の多くは、実行が速くなるというよりは、プログラムが分かり易くなるという類のもの。
だから競技なんかで期待されるような性質の利点ではないと思う。
0752デフォルトの名無しさん
2016/11/15(火) 22:55:05.16・本物のプログラマは FORTRAN でリスト処理を'する(do)'。
・本物のプログラマは FORTRAN で文字列操作を'やる(do)'。
・本物のプログラマは FORTRAN で経理処理を(必要ならば)'する(do)'。
・本物のプログラマは人工知能プログラムを FORTRAN で'する(do)'。
もし FORTRAN で出来なければ、アセンブリ言語でやる。アセンブリ言語で出来なきゃ、それはやる価値がないのだ。
だから
0753デフォルトの名無しさん
2016/11/15(火) 23:36:08.99ID:DS7sAygo本物のプログラマはPascalを使わない - Wikipedia
https://ja.wikipedia.org/wiki/%E6%9C%AC%E7%89%A9%E3%81%AE%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E%E3%81%AFPascal%E3%82%92%E4%BD%BF%E3%82%8F%E3%81%AA%E3%81%84
0754デフォルトの名無しさん
2016/11/15(火) 23:41:15.97ID:fGk3f/So言語そのものが凄くても知識に個人差があるし
今は常時デマが流れているので知識の格差は拡大する
0755デフォルトの名無しさん
2016/11/16(水) 00:11:34.24ID:vodKK2vI本物のプログラマって言葉にそんなにステータスがあるものなのだろうか
世間一般的に、本物のプログラマ、のイメージは間違いなく変人だろう
だから本物のプログラマは〜を使うって言われても
変なのしか寄ってこないのでは
0756デフォルトの名無しさん
2016/11/16(水) 00:40:01.90ID:r5MYZjSk0757デフォルトの名無しさん
2016/11/16(水) 19:27:49.79fromMap :: (Monad m, Ord a, Num score_t, Ord score_t)
=> Map a score_t -> StateT (PQueue a score_t) m ()
fromMap = ステートモナド上でMapから順位キューをコンストラクトする実装
として、後で、
fromCountMap::(Monad m, Ord a)
=> Map a Int -> StateT (PQueue a Int) m ()
fromCountMap = fromMap
なんてして制約を強くしてから実際に利用するの、一見無意味に見えて意味がある。そうでしょ?
0758デフォルトの名無しさん
2016/11/16(水) 22:31:04.07ID:r5MYZjSkIOでできるなら大抵の言語でできるし、できないならHaskellしかできない可能性が高い
0759デフォルトの名無しさん
2016/11/16(水) 23:31:08.77mモナド上でMapから順位キューを構築するステートモナドというべきか
>>757のように書くと、実装型なんていうオレオレ用語ができて、『fromCountMapはfromMapと同じ実装型だが使用するscore_tとしてはIntでハードコーティングする』なんて、ある意味型シグネチャと実装の主従逆転みたいな気分がしてる
型シグネチャプログラミング
実際にはスーパークラスからサブクラスを選定してるだけに過ぎないのだが
電波カキコスマソ
0760デフォルトの名無しさん
2016/11/17(木) 11:47:37.75ID:CyEwoRIt>nhkで東ロボくんの画面映ってたけど.hsだからhaskellらしい
あの東ロボくん
この時代に機械学習もせずに
ググって穴埋めとかして意味不明だったけど
Pythonで作ってなかったのかよ!!
そりゃライブラリ不足で頓挫しますわ・・・
0761デフォルトの名無しさん
2016/11/17(木) 12:51:10.62ID:gAiIIDy+0762デフォルトの名無しさん
2016/11/17(木) 13:57:20.33ID:OdFzw3CC0763デフォルトの名無しさん
2016/11/17(木) 16:34:54.670764デフォルトの名無しさん
2016/11/17(木) 16:35:45.840765デフォルトの名無しさん
2016/11/17(木) 16:38:37.67金融業界でソフトウェア開発に云々とか小春日和が稀にあるだけじゃん
0766デフォルトの名無しさん
2016/11/17(木) 16:48:54.71ID:cH0vE1/X0767デフォルトの名無しさん
2016/11/17(木) 23:18:18.18ID:uCMwWyH/0768デフォルトの名無しさん
2016/11/17(木) 23:21:14.06ID:UdEjGycY0769デフォルトの名無しさん
2016/11/18(金) 04:59:31.79ID:G5oHkwaeHaskellって実際には役に立たないのか?
0770デフォルトの名無しさん
2016/11/18(金) 05:47:19.02ID:Arybz0NX0771デフォルトの名無しさん
2016/11/18(金) 07:08:36.59ID:8X6DMoza0772デフォルトの名無しさん
2016/11/18(金) 09:06:31.96ID:eQ6+pXsk0773デフォルトの名無しさん
2016/11/18(金) 22:33:01.09ID:A97xHB6V本質的にはファイルアクセスに限らないテクニック(パターン)に関する質問だと思います。
f n = do
(a, b) <- withFile "example" ReadMode $ \h -> do
x <- getLine
y <- getLine
return (x, y)
case n of
1 -> a のみを使って何かする
2 -> b のみを使って何かする
3 -> a と b の両方を使って何かする
このような関数 f を 3 に適用した時は 2 度の getLine には意味があるので問題ありません。
しかし 1 や 2 に適用した時、本来はそれぞれ 1 度の getLine で済むはずが、
どちらも 2 度 getLine を行ってしまいます。
この無駄を省き、1 度しか getLine を行わないようにしたいです。
ここで、下記のような解決方法は取りたくありません。
f n = withFile "example" ReadMode $ \h -> do case n of
1 -> アクセスX して何かする
2 -> アクセスY して何かする
3 -> アクセス(X,Y) して何かする
初めの例はファイルアクセスと結果の利用が明確に分かれており、スッキリしていますが、
後の例はファイルアクセスと結果の利用が交互に書かれていて、ごちゃごちゃしているからです。
また、初めの例で a と b の両方を使って何かする際に、ファイルの開閉は一度で済ませたいです。
このような2つの条件を満たすような解決策を探しています。
何かアイデアはないでしょうか。
0774デフォルトの名無しさん
2016/11/18(金) 23:07:04.89ID:otEwH2mo改行コードがあるまで走査しなければなりません。そうしないと二行目を取り出せないでしょう? その後の具体的処理は遅延されます
0775デフォルトの名無しさん
2016/11/18(金) 23:14:40.43ID:PWErf1tRスッキリ書くテクニックはあまり多くない
スッキリ書けなかった人を批判するのは建設的ではないという考え方があるし
むしろ読む側がごちゃごちゃを読めるテクニックの方が建設的といえる
0776デフォルトの名無しさん
2016/11/18(金) 23:15:23.76ID:lkZKNOe7StateやIOモナドになると全然イメージできない。
0777デフォルトの名無しさん
2016/11/19(土) 00:24:37.37ID:leXZmGhTつうか、モナドを文脈として理解しようとするのが最も向いてるのがIOやST
「文脈」じゃなくて「計算効果」つっとけばよかったのにね
0778デフォルトの名無しさん
2016/11/19(土) 01:21:02.75ID:L++mh2K9Maybeは時々Nothingだが戻り値そのものは必要
そこが違う
0779デフォルトの名無しさん
2016/11/19(土) 02:05:35.98ID:hSh8+31t何か良いアイデアないかな?
Bashのsortコマンド使えば良い話ではあるんだけど
スレ住民のHaskell力を吸収して成長したい。
データは1行1データで記述されてる。
メモリは8GBです。
0780デフォルトの名無しさん
2016/11/19(土) 02:10:32.07ID:hSh8+31tファイルは圧縮したバックアップがあるので直接書き換えOK。
もはや何ソートを使えば良いかも想像つかない。
0781デフォルトの名無しさん
2016/11/19(土) 02:30:30.03ID:+b3rIBPgは? どうやって計算繋いでいくの?
途中で得た結果をどうやって後で利用するつもりさ
0782デフォルトの名無しさん
2016/11/19(土) 02:39:38.86ID:+b3rIBPgウルトラCに思える。OSがそんなこと許さないと思う
0783デフォルトの名無しさん
2016/11/19(土) 02:47:23.59ID:+b3rIBPg事を終わるまで繰り返す。
2ファイル選びマージソートしてファイルに書き出し、元の2ファイルをすぐ消去する。
これを繰り返していけばいつかデッカい目的の1ファイルになる
0784デフォルトの名無しさん
2016/11/19(土) 02:50:36.24ID:+b3rIBPg0785デフォルトの名無しさん
2016/11/19(土) 03:01:10.71ID:+b3rIBPgn個のソート済みファイルが残されるが、読み出すときはこのn個のファイルを開いて、マージソートするかのように頭から比較して吐き出していけば一応一行目からの羅列がすぐに得られる
0786デフォルトの名無しさん
2016/11/19(土) 03:21:05.85ID:hSh8+31t巨大ファイルでそれするとメモリ不足になりません?
0787デフォルトの名無しさん
2016/11/19(土) 03:35:10.59ID:hSh8+31tある程度マージした後に元ファイルからマージが終わった部分だけを削り取って
・・・と書いておいて気付いたけども
メモリや一時ファイルを使わずにファイルを直接書き換えるなんて許可されてないのかな?
>>782の書き込みの意図をようやく理解。
せめてストレージだけでも増設するしかないのだろうか。
0788デフォルトの名無しさん
2016/11/19(土) 04:25:07.98ID:+b3rIBPgメモリのようにデータを直接ピンポイントに書換なんてことはできない。SSDはともかく、HDDの磁気ヘッドが高速回転するディスクの書き換えたいファイルの一部だけにピンポイントでバチバチッとできるとは思えない。(失敗したらどうすんの)
巨大ファイルでも遅延読み書きすれば、実際に用がある部分が少ない場合なら、必要な部分読んで、不要になったらガベコレをするので定数空間量で行けるはず
そりゃあ何とかして空き増やすかストレージ増設が第一に決まってんでしょ。それができない状況でさあどうするっていう思考実験の話をしてるんでしょ
0789デフォルトの名無しさん
2016/11/19(土) 04:40:21.46ID:+b3rIBPg0790デフォルトの名無しさん
2016/11/19(土) 08:58:20.18ID:leXZmGhTアルゴリズムの本を読み返してこようね
0791デフォルトの名無しさん
2016/11/19(土) 08:59:29.36ID:leXZmGhT0792デフォルトの名無しさん
2016/11/19(土) 09:25:14.41ID:nvUvA6H6純粋な計算ならば必要になるまで遅延されます。
IOアクションそれ単体も、必要になるまでアクションさせず、かつソース内の見た目は、
アクションと結果の利用がそれぞれ塊になって分かれるようにするのも簡単です。
しかし、そのIOアクション群に open/close (あるいは前処理/後処理)が必要になると、
両者を分ける方法が思いつきません。
各IOアクションに open/close を付けると、今度は複数のアクションの結果が必要な場合に、
無駄な open/close が行われてしまいます。
>>774 人によっては例が悪かったと思います。
データベースへのアクセスで考えてみてください。
1回の open/close の間にテーブルAとテーブルBから一つずつ何かデータを取り出します。
その取り出したデータを使って何かをしたいが、テーブルA由来のデータのみ必要な場合もあれば、
両方のテーブルからのデータが必要な場合もあります。
前者の場合、テーブルBへのアクセスは必要ないが、>>773 の初めの例の方法だとそちらにもアクセスしてしまいます。
そんな一瞬で終わるアクセスが無駄だとかグダクダ言うなとおっしゃるのなら、
インターネット越しのアクセスなど時間のかかるIOアクションで考えてみてください。
>>775
ひとつの意見として受け止めますが、私個人は書き手と読み手の両方の努力、精進が欠かせないと思っています。
>>776 >>777
すいません、評価環境という文脈がよく分かりません。
私の例で言うと、アクションの結果を利用している部分が評価環境の文脈ということでしょうか。
それとも、IOアクションしている部分が評価環境の文脈なのでしょうか。
0793デフォルトの名無しさん
2016/11/19(土) 09:41:28.84ID:leXZmGhTWorldState -> (a, WorldState)
という関数なわけ。do記法内部の各ステップは裏で
WorldState(=評価環境)を変換しつつ次へ受け渡してる
隠蔽されてるがaの計算に影響を与える評価環境、これが文脈
0794デフォルトの名無しさん
2016/11/19(土) 09:59:56.91ID:nvUvA6H6評価環境の文脈の意味は分かりました。
しかし、すいません。
その評価環境の文脈という考え方をどのように利用すれば
私の問題が解決するのかがまだ分かりません。
あるいは、解決不可能ということを仰っているのでしょうか。
0795デフォルトの名無しさん
2016/11/19(土) 10:09:10.27ID:leXZmGhT>>777は>>776へのレスだろうし>>776は別に誰に対してのレスでもなかろ
0796デフォルトの名無しさん
2016/11/19(土) 10:10:41.37ID:leXZmGhT「だろうし」は「だし」ね
0797デフォルトの名無しさん
2016/11/19(土) 10:14:39.11ID:nvUvA6H6ごめんなさい。
次からは、私へアンカーが打たれているレスにのみご返事します。
0798デフォルトの名無しさん
2016/11/19(土) 10:38:45.99ID:9ou0Tz/L即スタックオーバーフローでしょ
0799デフォルトの名無しさん
2016/11/19(土) 11:42:51.43ID:L++mh2K9aがWorldStateの外にあるから面倒なんだよな
全てがWorldStateの内部にあったらいいのに
0800デフォルトの名無しさん
2016/11/19(土) 12:08:17.07ID:ygHmZoSw後の行で本当にそれに関わった値が評価された場合だけ実際に通信するのではないだろうか
つまりテーブルBのデータを必要な値が評価されるのみのケースでは、その上にテーブルAへのアクセスの指示が書いてあったとしても、テーブルAへのアクセスが発動することはない
モナドでプログラマが把握できるのは(必要とされた場合の)実行順序だけであり、本当にその一行が実行されるかは判らない。
ランタイムシステムが、それを評価しないと答えが出せないときのみ、答を出すのに最低限必要な部分までだけ評価を進める。その行(の値)が要らないで終わるならスルーされる
しかし基本は実測だ。事件は会議室で起きているのではない。現場百篇。データベースへのアクセスログと睨めっこだよワトソン君
0801デフォルトの名無しさん
2016/11/19(土) 13:01:13.05ID:L++mh2K9そういうのをスルーして成功したのがPythonだった
0802デフォルトの名無しさん
2016/11/19(土) 13:12:21.64ID:57c4ddvC性能低下も間違いのうちに入るのじゃなかろうか
0803デフォルトの名無しさん
2016/11/19(土) 13:19:12.41ID:leXZmGhT>関数型は間違いは少なくなるかもしれないが性能見積もりが困難という解釈でいいのかな
性能で問題になるのは時間より空間でそれはHaskellの遅延評価のせい
OCamlで性能見積もりが困難だという話はおよそ聞いたことがない
0804デフォルトの名無しさん
2016/11/19(土) 13:30:47.62ID:ygHmZoSw0805デフォルトの名無しさん
2016/11/19(土) 15:23:51.24ID:GLukN6SUAtCoderでC++を使ったのが全ての答え。
0806デフォルトの名無しさん
2016/11/19(土) 16:42:56.18ID:WZW0gWLh0807デフォルトの名無しさん
2016/11/19(土) 17:13:35.27ID:B0NaVLvy普通OSがファイルの一部あるいは全部をメモリ上にロードして
それを読み書き終わったものをOSがHDDに必要に応じて書き出すんじゃないの
0808デフォルトの名無しさん
2016/11/19(土) 17:32:00.30ID:ygHmZoSw0809デフォルトの名無しさん
2016/11/19(土) 19:59:58.50ID:L++mh2K90810デフォルトの名無しさん
2016/11/20(日) 04:03:02.88ID:e66ZIrIv0811デフォルトの名無しさん
2016/11/20(日) 04:34:12.04ID:y28VMjGS両辺に現れる型の等価性(equality)を主張する記法
0812デフォルトの名無しさん
2016/11/20(日) 16:55:46.50ID:bc5Pq5DxHaskellで書き直したものがgithubに上がってるけど
コーディングの美しさが溜め息の出るレベルだ。
https://github.com/tensorflow/haskell
読むだけでHaskell力が高まりそうだからみんな見た方がいい。
調べたらgoogle社員のHaskellerが作ったみたい。
0813デフォルトの名無しさん
2016/11/20(日) 17:17:48.23ID:FAU7VgEK0814デフォルトの名無しさん
2016/11/23(水) 19:35:05.94ID:8RkzW8R20815デフォルトの名無しさん
2016/11/23(水) 19:53:04.24ID:bzle2eVBsample.cabal ファイルにある library の項をコメントアウトしたら、
stack build コマンドが通らなくなりました。
stack build -v コマンドで詳細を表示させても、
ビルドが通らなくなった原因は分かりませんでした。
cabal ファイルに library の項が必要だという情報が、
どこかのファイルに書かれているのでしょうか。
0816デフォルトの名無しさん
2016/11/23(水) 21:04:08.50ID:6lcDdPCf読めない奴はおそらく読みながら仕様を把握しようとするから読めない
0817デフォルトの名無しさん
2016/11/24(木) 01:48:40.96ID:uCqvKhkZエラーメッセージくらい載せては?
executableの項のbuild-dependsにエントリされてる"sample"は
このsampleパッケージ自身が提供するライブラリ=コメントアウトしたlibrary項
を意味してるから、少なくともこれはエラーの原因になるはず。
0818デフォルトの名無しさん
2016/11/24(木) 20:13:03.72ID:NKA7Qvmdありがさうございます。
なるほど、自分自身のパッケージ名というのは、library の項で記述されるライブラリを指しているのですね。
勉強になりました。
ちなみに、エラーメッセージというものは出力されなかったのですが、
stack build コマンドで次のメッセージが出力されました。
(パスの一部は伏せ字にしてあります)
sample-0.1.0.0: unregistering (local file changes: sample.cabal src/Lib.hs)
sample-0.1.0.0: configure
Configuring sample-0.1.0.0...
sample-0.1.0.0: build
Preprocessing executable 'sample' for sample-0.1.0.0...
<command line>: cannot satisfy -package-id sample-0.1.0.0-D0Za6tWWy4BLT1YZ9OrRCu
(use -v for more information)
-- While building package sample-0.1.0.0 using:
/home/????/.stack/setup-exe-cache/x86_64-linux/setup-Simple-Cabal-1.24.0.0-ghc-8.0.1 --builddir=.stack-work/dist/x86_64-linux/Cabal-1.24.0.0 build exe:sample --ghc-options " -ddump-hi -ddump-to-file"
Process exited with code: ExitFailure 1
stack build -v コマンドを使うと長々とメッセージが出力されますが、
どの部分がエラーを示しているのか分かりませんでした。
0819デフォルトの名無しさん
2016/11/24(木) 20:15:05.92ID:NKA7Qvmdもしかして、メッセージに一部文字化けしている部分があるかもしれません。
そこは本来はただの空白文字なので気にしないでください。
0820デフォルトの名無しさん
2016/11/28(月) 21:15:44.92ID:/+1ypXpu気持ちとしては、次のようなことがしたい。
let f msg = Just . printf msg
let a = f "ok"
let b = f "[%d]" (17 :: Int)
putStrLn a
putStrLn b
とすると、
Just "ok"
Just "[17]"
と印字される。
もちろんこれは構文エラーだが、こんなことを実現する方法はある?
0821デフォルトの名無しさん
2016/12/01(木) 01:26:47.70ID:dPmAOjzFstackでtypoして変なパッケージをインストールしてしまった時に
削除するのってどうするんですか?
0822デフォルトの名無しさん
2016/12/01(木) 02:22:05.71ID:RWGHokMu設定ファイルのtypo直せばそれでいい
0823デフォルトの名無しさん
2016/12/01(木) 03:17:49.04ID:mD//1kpz0824デフォルトの名無しさん
2016/12/01(木) 03:35:09.78ID:RWGHokMuhttps://stackoverflow.com/questions/38636436/how-to-uninstall-a-haskell-package-installed-with-stack
0825デフォルトの名無しさん
2016/12/01(木) 14:26:03.54ID:L5XSy+iF実は練習がてらネットに落ちてる軽めの問題を解くために
プロジェクトを作らず、libraryが必要になる度に
「stack install 〇〇」してコンパイルせずにrunghcで回答していたのですが
「stack install numbers」と間違えて「stack install primes」と打ち込んだところ
悲劇的な事に「Data.Numbers.Primes」がダブったようで
とあるコードでrunghcが動かなくなってしまいました。
・・・と書いている途中にもう一度「stack install numbers」をしたら
何故かもう一度libraryのダウンロード&インストールが始まってrunghcも通りました。
結局アンインストールは出来ていなさそうですが解決してしまったようです。
お騒がせしました。
0826デフォルトの名無しさん
2016/12/01(木) 16:00:05.460827デフォルトの名無しさん
2016/12/01(木) 19:42:05.67ID:RWGHokMu解決したんならもういいと思うけど、
パッケージ名を指定してモジュールをimportできるよ
0828デフォルトの名無しさん
2016/12/01(木) 19:48:00.95ID:RWGHokMuimport “numbers” Data.Numbers.Primes
特定ヴァージョンをインポートしたい時は
パッケージ名をヴァージョン付きにすればいい
import “packagename-x.y.z” Some.Module
とかな。
0829デフォルトの名無しさん
2016/12/03(土) 18:31:40.23ID:LlRr0ykU0830デフォルトの名無しさん
2016/12/04(日) 00:08:43.14ID:VB8xM7ox0831デフォルトの名無しさん
2016/12/04(日) 01:39:44.55ID:ylt2eQeo0832デフォルトの名無しさん
2016/12/04(日) 10:47:47.19ID:iPD09Yju小さいものなら(前半リスト、後半逆順リスト)みたいな風にして管理できるが
まあ素直に両端キュー使ったほうがいい
0833デフォルトの名無しさん
2016/12/04(日) 13:27:17.57ID:V6IaL/Kz0834デフォルトの名無しさん
2016/12/05(月) 23:29:18.28ID:6vkhaohhProjectEulerのような競技ブログラミング的なコードではなく
入出力を扱う簡易アプリケーション的なプログラムでお願いします。
0835デフォルトの名無しさん
2016/12/06(火) 00:04:44.58ID:YoH2PHvZなんで、そんなの求めてるの?
0836デフォルトの名無しさん
2016/12/06(火) 00:07:50.92ID:z2yWW9Nx0837デフォルトの名無しさん
2016/12/06(火) 00:11:16.07ID:bK/cN5Vqちと古いが
0838デフォルトの名無しさん
2016/12/06(火) 00:53:14.40ID:/K6LEbiX出来ればデータ型を使ってじゃんけんゲームを作ったり
動かして遊べるような簡単なプログラムを
Haskellに精通した人が書くとこうなる。
みたいなコード集が理想です。
0839デフォルトの名無しさん
2016/12/06(火) 07:58:32.42ID:ej7InLr+0840デフォルトの名無しさん
2016/12/06(火) 10:06:02.34ID:RLRg255J書いてここにURL晒せば勝手にレビューされるよ
0841デフォルトの名無しさん
2016/12/07(水) 02:00:07.08ID:0WE5r4ET0842デフォルトの名無しさん
2016/12/07(水) 09:27:55.28ID:t44ep7+e0843デフォルトの名無しさん
2016/12/07(水) 09:34:35.61ID:DclcCWLN0844デフォルトの名無しさん
2016/12/07(水) 10:10:25.19ID:aotafFF20845デフォルトの名無しさん
2016/12/07(水) 14:30:59.21ID:h31NqZEMじぶんはAOJが好き
語学の勉強と同じで、中学生程度の言い回しでいいから、とにかく書いてみる。
それから名人たちのコードを鑑賞して、あまりの格差に愕然とする。
気を取り直していいところをパクって次へ、以下ループ。
0846デフォルトの名無しさん
2016/12/07(水) 19:51:01.71ID:9owFdVES0847デフォルトの名無しさん
2016/12/07(水) 21:18:26.77ID:VZ50/vQUおおっ!!
面白そう!!
そして"Hello World"で即詰んだw
0848デフォルトの名無しさん
2016/12/08(木) 02:30:35.85ID:u2dNiCpn0849デフォルトの名無しさん
2016/12/08(木) 05:48:28.18ID:Sb9Sgrh7手を後ろに縛られて十徳ナイフを括り付けられて闘わされるみたいな気分
0850デフォルトの名無しさん
2016/12/08(木) 08:36:13.29ID:5QNwH8zEHaskellの入門書だと
第8章でやっと出る中級者テクニックみたいな扱いだからな。
0851デフォルトの名無しさん
2016/12/08(木) 09:06:17.74ID:WWhHiD/90852デフォルトの名無しさん
2016/12/08(木) 10:14:41.75ID:QjRH9I62「"0 0"が入力されるまで与えられた2つの数字を小さい順に並べ替え続ける」
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ITP1_3_C
に下記のコードを提出したところWrong Answerになったのですが
outputはdiffコマンドで調べても正解者と同じですし
手元で動かしたところ"0 0"でも終了で正解な気がするので修正箇所の目処も立ちません。
自力での解決はギブアップなのでアドバイスお願いします。
import Data.List (sort)
exchange :: IO ()
exchange = do
s <- getLine
if s == "0 0" then return ()
else do
putStrLn $ (unwords . sort . words) s
exchange
main = exchange
0853デフォルトの名無しさん
2016/12/08(木) 11:43:51.68ID:7PHkchZ4テストデータが
3 2
2 2
5 3
10 2
0 0
だと...
0854デフォルトの名無しさん
2016/12/08(木) 12:13:29.34ID:QjRH9I62返答ありがとうございます。
outputは自分の出力ではく正解例だったと理解しました。
地道に書き直したいと思います。
0855デフォルトの名無しさん
2016/12/08(木) 16:07:18.25ID:va2iI+cZclass C c where
dummy :: c a -> Bool
instance (C c) => Eq (c a) where
t == u = undefined
foo :: C c => c a -> c a -> Bool
foo t u = t==u
最初の行でIncoherentInstancesを拡張として指定してるのに
このソースをghciで:lするとIncoherentInstances拡張使えよと怒られます
ご教示お願いします
0856デフォルトの名無しさん
2016/12/09(金) 13:47:36.49ID:tvJsjzEB遅レス
別言語だけど、そういうのがエラーにならないから
苦しんだりする。
0857デフォルトの名無しさん
2016/12/09(金) 13:49:42.20ID:tvJsjzEB完結(閉じる)させよう完結させようとしてるからじゃね?
あと遅延評価。
0858デフォルトの名無しさん
2016/12/09(金) 13:51:17.58ID:K0qlOadlmain = solve . map (map read.words).lines =<< getContents
solve :: [[Int]] -> IO ()
solve ([a,b]:xs) = let output x y = putStrLn (show x ++ " " ++ show y) in
if [a,b] == [0,0] then return () else (if a<=b then output a b else output b a) >> solve xs
くらいで充分では。
0859デフォルトの名無しさん
2016/12/09(金) 18:22:07.66ID:2XG9ELCpstack install pandocやっても全然インストールが終わりません
6時間ぐらいやってやっと最後のpandocのビルドに入ってるんですがこれも2時間ぐらい放置しても終わりません
もう面倒くさいのでインストールしたパッケージを削除したいんですが
~/.stack/indices/Hackage/packages/の中のディレクトリを全部rmで削除しちゃっても問題ないですか?
インストール済みのパッケージ一覧ってどうやって確認するんでしょうか?
ちなみにstack setup;stack install pandocしかコマンドは打ってません
0860デフォルトの名無しさん
2016/12/09(金) 18:22:53.02ID:s+wOeJ/3例えば Reader, State, Writer の3つを使いたい場合は?
さらに複雑にError, Cont, IO なども組み合わせるとしたら?
いまいちイメージがつかめない
0861デフォルトの名無しさん
2016/12/09(金) 19:12:53.77ID:p8RNi3Am同じ考え方でいいならごちゃごちゃ考えるより禁止した方が早いというイメージ
0862デフォルトの名無しさん
2016/12/09(金) 20:29:18.89ID:EUMrXHYZ0863デフォルトの名無しさん
2016/12/09(金) 21:31:32.26ID:jpcAk/L4https://github.com/albertoruiz/hmatrix/blob/master/INSTALL.md
に従ってgslで入れようとしているのですが、うまくいきません。blasもlapackもdllファイルがあればいいのか、それともdll.aが必要なのか教えてください
0864デフォルトの名無しさん
2016/12/10(土) 13:21:36.17ID:Wk3rTOSj0865デフォルトの名無しさん
2016/12/10(土) 13:52:08.59ID:FMtwqCBjhttp://syocy.hatenablog.com/entry/haskell-library-2016
0866デフォルトの名無しさん
2016/12/10(土) 21:09:59.52ID:XdnKR7fMghc にコンパイルオプション -threaded や -with-trtsopts=-N を渡す意味ってある?
(parallel や repa などのパッケージを一切使っていないとして)
こうすればメインプログラムはシングルコアでも、GC がマルチコアで走るとか。
0867デフォルトの名無しさん
2016/12/10(土) 22:03:47.42ID:TvX35Fp0自己解決しました。cabalで最新のhmatrixを入れるとlibgfortranを読み込んでくれませんが、一つバージョンの低いものならマニュアル通りで上手くいきました。
0868デフォルトの名無しさん
2016/12/11(日) 20:56:56.63ID:UUDzf3sv2,000,000までのフィボナッチ数のリストを
コンパイル時に生成しておく方法ってあります?
メタプログラミングを楽しく学びたいなと思っても情報が少なくて
0869デフォルトの名無しさん
2016/12/14(水) 23:24:27.97ID:orbg+kS20870デフォルトの名無しさん
2016/12/15(木) 12:26:23.12ID:7KRIzock0871デフォルトの名無しさん
2016/12/16(金) 00:23:50.01ID:cnzBJNV10872デフォルトの名無しさん
2016/12/17(土) 20:09:38.06ID:WuIMYiWlhttps://www.packtpub.com/application-development/haskell-high-performance-programming
今は忙しくて時間がないが、正月休みにでも読んでみたい。
0873デフォルトの名無しさん
2016/12/17(土) 20:35:28.77ID:yLbp/UkZfib_mem :: Int -> Integer
fib_mem = (map fib [0..] !!)
where
fib 0 = 1
fib 1 = 1
fib n = fib_mem (n-2) + fib_mem (n-1)
https://www.packtpub.com/mapt/book/Application%20Development/9781786464217/1/ch01lvl1sec09/Memoization+and+CAFs
そ の 発 想 は な か っ た !
英語わからずコード眺めるだけでも目から鱗だなこれ。
0874デフォルトの名無しさん
2016/12/17(土) 21:15:04.44ID:+cQgdhZ9フィボナッチ数列の第k項を計算している?
0875デフォルトの名無しさん
2016/12/17(土) 21:33:00.74ID:OM5N9qzB理解するのに30分くらいかかった
0876デフォルトの名無しさん
2016/12/17(土) 22:54:27.37ID:X2n4kSym0877デフォルトの名無しさん
2016/12/17(土) 23:36:22.22ID:AzKtkJ0Qすごいな高速だ
http://melpon.org/wandbox/permlink/PpaIwJYU3CAsY8Cp
http://melpon.org/wandbox/permlink/iik6Ss9TnJwdAyBE
http://melpon.org/wandbox/permlink/8c31SdcrKfjoDkPq
0878デフォルトの名無しさん
2016/12/17(土) 23:38:55.80ID:+cQgdhZ90879デフォルトの名無しさん
2016/12/18(日) 00:14:05.08ID:KFsMSIdd0880デフォルトの名無しさん
2016/12/18(日) 02:59:30.30ID:F22674nMただfib 0 = 0 であって欲しいと思うんだけどな
0881デフォルトの名無しさん
2016/12/18(日) 04:13:03.23ID:5HKYrKluこういうコードを書きたくてHaskellを始めた事を思い出したよ
0882デフォルトの名無しさん
2016/12/18(日) 06:34:09.87ID:KFsMSIdd0883デフォルトの名無しさん
2016/12/18(日) 08:36:34.04ID:hTsk1Lv9プログラムソースの可読性というのは、
いつでも万人に容易に理解できるということではありません。
メインとなる読者を想定した上で問題にすべきものです。
そして想定されるソースの読者は状況によって変わります。
たとえば、>>873 のコードは(出典元の本を読めばわかりますが)、
メモ化の仕組みや方法が理解できた暁には容易に読めるようになっています。
>>880 がその一つの証拠です。
本を読み終えた者にとっては十分に可読性が高いと言えるでしょう。
もし >>882 の理由で可読性が乏しいと言うのなら、
たとえば Hackage のライブラリのコードは、そのほとんどについて
可読性が乏しいことになってしまいます。
0884デフォルトの名無しさん
2016/12/18(日) 09:44:11.87ID:tEwqUsZ4おまい優秀だな
おれは1時間かかった
orz
0885デフォルトの名無しさん
2016/12/18(日) 13:37:45.40ID:L9+Ra1Z50886デフォルトの名無しさん
2016/12/18(日) 14:48:05.87ID:2kBZC6Xk0887デフォルトの名無しさん
2016/12/18(日) 17:01:21.92ID:UVlvUqtT1時間で終わるものでも何回でもしたくなるものが神ゲーなのだ
100時間かかろうがもう二度としたくないと思われたら負けなのだ
0888デフォルトの名無しさん
2016/12/18(日) 20:26:11.80ID:KFsMSIdd0889デフォルトの名無しさん
2016/12/20(火) 03:50:03.60ID:MHiDziMAf (c:cs) = f $ (nanikaDrop c cs)++[c]
この場合、リストだと計算量膨れ上がってしまいます(長いリストの末尾に追加は不適)
うまい解決策はありませんか?(Sequenceなど大袈裟なもの持ち出さずとも済むやつ)
0890デフォルトの名無しさん
2016/12/20(火) 04:09:51.89ID:+ciV1zGy0891デフォルトの名無しさん
2016/12/20(火) 04:34:56.31ID:+ciV1zGyfoldr (:) [c] cs で試してみて。
0892デフォルトの名無しさん
2016/12/20(火) 11:31:59.14ID:M7yybZ5b= f $ (nanikaDrop c []) ++ [c]
= f [c]
計算量を有限にする解決策がない
0893デフォルトの名無しさん
2016/12/20(火) 16:23:54.11ID:/9zIrQ23ストックするリストをもう一つ設ける感じの定跡があったような
f cs = f' cs []
where f' [] ds = hoge
f' (c:cs) ds = f' (nanikaDrop' (c:cs) ds) (c:ds)
0894デフォルトの名無しさん
2016/12/20(火) 16:59:59.39ID:M7yybZ5bdsは逆順だから、元のバージョンと (計算量だけでなく) 計算結果が異なる可能性がある
0895デフォルトの名無しさん
2016/12/20(火) 21:02:32.59ID:CJ2gtWfFこの問題に似てる(だけどちょっと違うか)
0896デフォルトの名無しさん
2016/12/21(水) 01:23:38.58ID:PxT7y6eEデータ列の並び自体には変更がなくて、参照開始位置だけが変わるんだから
配列とインデックスのペアを渡すようにすればいいんじゃね
呼び出しのときにwhere節でインデックス+1と範囲チェックして
0897デフォルトの名無しさん
2016/12/22(木) 02:04:03.61ID:8qaRbIfFHaskellって変に関数型っぽさを意識しなくても
元々の言語の力が強力だから
フリーダムに破壊的代入しまくっても結構大丈夫そうだな。
書き手の自主規制は
「unsafe○○を使わない」くらいで良さそう。
0898デフォルトの名無しさん
2016/12/22(木) 02:45:33.69ID:6SQ/7lyG>フリーダムに破壊的代入
これって具体的にはIORefとかIOArrayとかのこと?
0899デフォルトの名無しさん
2016/12/22(木) 19:40:41.52ID:mj10TB7nIORefを非公式な存在にしておけば説明を省略できる
0900デフォルトの名無しさん
2016/12/23(金) 12:25:30.71ID:WPc1DkhLクイックソートやフィボナッチ数列は書けるけど
入力の受け取りは分かりませんという初心者が大量発生してるのも問題だよね。
0901デフォルトの名無しさん
2016/12/23(金) 13:09:51.23ID:KuQ5z2Nq初心者には良いかもしれない
0902デフォルトの名無しさん
2016/12/23(金) 14:15:24.30ID:Tuuf9WFQ0903デフォルトの名無しさん
2016/12/23(金) 14:18:31.35ID:kNavPx7fData.Mapでもハッシュ表でも使ったらよい
0904デフォルトの名無しさん
2016/12/23(金) 15:21:28.33ID:Tuuf9WFQO(logN)では速度不足で困ってるんよ。
配列は無理となると八方塞がりだな全く。
0905デフォルトの名無しさん
2016/12/23(金) 15:53:25.75ID:KuQ5z2NqO(log N)でも遅いならGCが不要な言語が必要なのでは
0906デフォルトの名無しさん
2016/12/23(金) 15:57:41.36ID:CW+qY3ex文字列に規則性を要請してハッシュ化したものを剰余で制限して固定長配列に詰め込むみたいな
任意の文字列なら原理的に無理だ
0907デフォルトの名無しさん
2016/12/23(金) 17:43:33.87ID:wkM1H3Zq0908デフォルトの名無しさん
2016/12/23(金) 18:31:05.70ID:XiISUE9C0909904
2016/12/24(土) 03:16:30.82ID:mtrCHwqXData.HashMap.Strictに変更したら高速化出来たわ。
どちらもO(log N)なのに実行速度が10倍違うという謎。
0910デフォルトの名無しさん
2016/12/24(土) 07:05:16.24ID:Y/bvEAMgData.Map.Strict
https://hackage.haskell.org/package/containers-0.5.9.1/docs/Data-Map-Strict.html
> The implementation of Map is based on size balanced binary trees (or trees of bounded balance)
Data.HashMap.Strict
https://hackage.haskell.org/package/unordered-containers-0.2.7.1/docs/Data-HashMap-Strict.html
> The implementation is based on hash array mapped tries. A HashMap is often faster than other tree-based set types, especially when key comparison is expensive, as in the case of strings.
0911デフォルトの名無しさん
2016/12/24(土) 11:02:55.07ID:uh1BkFoy0912デフォルトの名無しさん
2016/12/24(土) 11:07:27.34ID:I8duN72O0913デフォルトの名無しさん
2016/12/24(土) 12:15:27.26ID:jPmKUoCtそういう嫌味は通じないと思うよ。
0914デフォルトの名無しさん
2016/12/24(土) 19:02:03.91ID:hxBGGNm6この程度で質問とかされるとレベル下がる
(HashMapなんて知らなかったとは言えない・・・)
0915デフォルトの名無しさん
2016/12/24(土) 22:11:20.47ID:uh1BkFoy存在しないものを数値化してもニセ科学にしかならない
0916デフォルトの名無しさん
2016/12/25(日) 00:08:15.90ID:ZRKIJIGhHashMapはarrayがあるから挿入や削除のコスト高そう
0917デフォルトの名無しさん
2016/12/25(日) 08:52:13.69ID:WFXIwNvnわたしはちょっとした実験にも stack new でプロジェクトを作って行っているのですが、
そうすると、~/.stack/snapshots にいつくものバージョンのライブラリが作られます。
昔作ったバージョンの分はもう不要なのですが、これはシェルで削除しても問題ないでしょうか。
他にいっしょに削除、または書き換えるべきファイルはあるでしょうか。
それとも、このような場合は stack のコマンドを使うべきでしょうか。
0918デフォルトの名無しさん
2016/12/26(月) 01:52:03.42ID:JnmwQ0pE「遅延評価なんかさせねぇぞ」という
緩やかな圧力を受けている気がしますが気のせいなのですか?
0919デフォルトの名無しさん
2016/12/26(月) 04:26:12.46ID:zGEIM/Ml0920デフォルトの名無しさん
2016/12/26(月) 08:33:06.36ID:t1RDiD7h0921デフォルトの名無しさん
2016/12/27(火) 20:27:17.07ID:AVwpVaHj0922デフォルトの名無しさん
2016/12/28(水) 06:15:45.77ID:WV6f4N8vプログラミング言語ってのは適切に選択すべきだな
0923デフォルトの名無しさん
2016/12/28(水) 06:31:11.88ID:gfblSjYR0924デフォルトの名無しさん
2016/12/28(水) 14:45:45.05ID:eesspTrt型安全は建前にすぎない
C++やJavaScriptの弱点を探して偶々見つけた建前
その建前で一番得をしたのがHaskellだったが
0925デフォルトの名無しさん
2016/12/28(水) 16:53:59.33ID://kCk9pj0926デフォルトの名無しさん
2016/12/28(水) 17:42:32.59ID:mX+MonYxその意味でheadは苛々する
0927デフォルトの名無しさん
2016/12/28(水) 18:07:16.22ID:dxHkwKr/getterはエラー値を返すか例外を投げる
コールバックはエラー値を渡して呼び出すくらいなら何も呼び出さない
0928デフォルトの名無しさん
2016/12/28(水) 22:02:33.89ID:+yS2yZq8do記法の乱発でも構わないから
色々なコードをHaskellで書きたいのが本音だけど
そういうコードって公開を恥と思っているのか
参考になるコードが表に出ないのよね。
0929デフォルトの名無しさん
2016/12/28(水) 22:13:57.46ID:QsQB820n0930デフォルトの名無しさん
2016/12/28(水) 23:25:32.20ID:g7cKfXNx競プロ系でヘボコードの量産と公開は大量になされてるし
GitHubなどでの個人リポジトリはゴミ溜めと化しててショッボイコードいっぱい公開されてるし
0931デフォルトの名無しさん
2016/12/29(木) 01:04:41.73ID:CZgr2A6Dオリジナリティ皆無のコードで解いて悦に浸ってる人ばかりだもんな。
授業のノートみたいな記事が乱立していて
実際に身につけたHaskell技術で何かしてる雰囲気が一切感じ取れない。
将棋ソフトの大会でHaskellの参加者0名なのも納得だよ全く。
0932デフォルトの名無しさん
2016/12/29(木) 01:41:49.16ID:958/OC8Qhttps://github.com/search?utf8=%E2%9C%93&q=tetris&l=Haskell
たしかに参考にならんな
0933デフォルトの名無しさん
2016/12/29(木) 12:34:13.41ID:j7+IUMHV母国語も知られたくない場合に世界標準語Haskellを使う
0934デフォルトの名無しさん
2016/12/29(木) 13:50:05.11ID:j7+IUMHV0935デフォルトの名無しさん
2016/12/29(木) 16:51:08.32ID:LQ9PzYon0936デフォルトの名無しさん
2016/12/29(木) 18:10:51.24ID:AiXb9Xql0937デフォルトの名無しさん
2016/12/29(木) 19:13:20.13ID:zRLSWr5OA 矛盾を指摘する
B あだ名をつける
0938デフォルトの名無しさん
2016/12/29(木) 20:01:04.20ID:vDsL3Xsf0939デフォルトの名無しさん
2016/12/29(木) 22:02:36.54ID:kSKj0BmQ0940デフォルトの名無しさん
2016/12/31(土) 05:44:27.97ID:UcNaXnZhどの記事もGUI周りに触れてないから難しいな。
Hello Worldを表示する簡単なアプリの作り方だけ
サクッと解説してるような記事があれば教えて欲しいね。
0941デフォルトの名無しさん
2016/12/31(土) 11:08:57.19ID:kRv/DXPoシェルの中から簡単に調べる方法はありますか?
目的はそのバージョン番号を別のコマンドに入力することです。
たとえばデフォルトでは新たに stack new すれば、
その際に LTS のバージョン番号を知ることができますが、
バージョン番号を知ることだけが目的ならば大げさです。
また、stackage のサイトのトップページに載っていますが、
これはシェルの中に居ながら知るという目的には合いません。
0942デフォルトの名無しさん
2016/12/31(土) 19:24:54.85ID:EfF4/AjA単に最新のltsでプロジェクト作りたいなら、lts-7 のようにマイナーバージョンを省略するのがオススメ。
$ stack new Test --resolver=lts-7
質問の直接の答えは… たとえばこういうのはどう? stackageのサイトはマイナーバージョンを省略すると最新のにリダイレクトするので、その先のURLを取得して解析する。
$ curl -s -D - https://www.stackage.org/lts-3 | grep Location | sed -E
0943942
2016/12/31(土) 19:30:45.21ID:EfF4/AjAhttp://lpaste.net/2827629961710403584
0944デフォルトの名無しさん
2016/12/31(土) 19:31:23.52ID:EfF4/AjAシェルで削除してよいと思う。
0945デフォルトの名無しさん
2017/01/03(火) 23:00:57.32ID:8FCGUjqyHaskell使いは0人なんだろうなぁ・・・
俺に技術力があれば参加するのに悔しい
0946デフォルトの名無しさん
2017/01/03(火) 23:26:08.17ID:4YoTfy16メジャーアップデートされていた場合に把握できないので、実用的とは言い難いです。
せっかくのアドバイスでしたがすみません。
ありがとうございました。
バージョン番号だけを確実に得る方法は無さそうなので諦めます。
0947デフォルトの名無しさん
2017/01/04(水) 01:27:11.89ID:sXyRenYZ例えば今だと Location: /lts-7.14 が出力されるけどそれじゃいかんの?
0948デフォルトの名無しさん
2017/01/04(水) 04:17:15.14ID:6ooS73gi上手いこと対応してくれれば良いんだけど
0949デフォルトの名無しさん
2017/01/04(水) 08:13:28.15ID:WVq2nDsHまだ評判みたいのは聞こえてこないな
0950デフォルトの名無しさん
2017/01/04(水) 15:37:13.54ID:5EwwSdU6GCを明示的に行わないと携帯自身が死ぬと思う
0951デフォルトの名無しさん
2017/01/05(木) 15:25:10.38ID:MABferfQconst center を集める、とかいう使い方も見た。
Web で調べても経済学用語としてしか出てこないんだけど、同じ意味で捉えていいの?
0952デフォルトの名無しさん
2017/01/05(木) 15:57:44.99ID:qnGCBE0G0953デフォルトの名無しさん
2017/01/05(木) 16:40:24.11ID:MABferfQごめん、単に書き間違えただけ。
cost ね
0954デフォルトの名無しさん
2017/01/05(木) 22:58:18.77ID:XwpChIXW意味はGHCのマニュアルなどを参照
第5章 プロファイルを取る
http://www.kotha.net/ghcguide_ja/latest/profiling.html
0955デフォルトの名無しさん
2017/01/06(金) 05:48:29.36ID:x6C/Cft1これ日本haskell界では有名なサイトなの?
http://www.kotha.net/
0956デフォルトの名無しさん
2017/01/06(金) 15:16:05.67ID:5l30YHWE同じ意味で使われているのではない?
時間や計算機資源はコストという考えを前提に
0957デフォルトの名無しさん
2017/01/07(土) 05:10:29.38ID:JXrYQtFJテクニカルタームというより、会計で使う原価部門の概念を流用しているのでは?
Haskellでのテクニカルタームとしての定義は>>954に書いてあるが、もとの意味はコストがどこで発生したかを管理把握するための会計上の区分。
0958デフォルトの名無しさん
2017/01/07(土) 12:31:58.32ID:S46XE+Caモナドの語源はライプニッツと関係ありそう
だがモナドの定義はライプニッツと全く関係ない
0959デフォルトの名無しさん
2017/01/07(土) 14:43:46.03ID:QuS23fJI0960デフォルトの名無しさん
2017/01/07(土) 15:38:35.59ID:7iPw9gWV細かいチューニングが利用者任せなのも普及しない原因だと思うわ。
0961デフォルトの名無しさん
2017/01/07(土) 21:53:37.71ID:S46XE+Ca無限の長さを遅延評価で処理するリストと同じではない
0962デフォルトの名無しさん
2017/01/08(日) 09:07:59.66ID:HXGQkJ06みんなの言うとおり、ぴったり合うということで用語を流用してるんだね。
シャノンがエントロピーを流用したのと似た感じか。
ありがと。
0963デフォルトの名無しさん
2017/01/08(日) 13:41:38.81ID:s45iu22linfixr 5 $+
($+) = ($)
を使ってるんだけど、邪道かな?
0964デフォルトの名無しさん
2017/01/09(月) 21:52:35.01ID:Gy5eZLLr個人的にはなんでそんなのが欲しいのか知りたい
0965デフォルトの名無しさん
2017/01/10(火) 19:00:40.72ID:f/pmyPVx0966デフォルトの名無しさん
2017/01/11(水) 00:32:30.85ID:4yaLCJvM命名に英語の知識が若干必要だけど
0967デフォルトの名無しさん
2017/01/11(水) 01:56:24.44ID:4yaLCJvMこれマジ!?
0968デフォルトの名無しさん
2017/01/11(水) 04:35:07.03ID:qB6hV9pT久しぶりに触ったらなってた。
理屈で言えば単純な再帰は末尾再帰に変換するパターンは決まってるから、変形してコンパイルしてくれてるんじゃないかな。
0969デフォルトの名無しさん
2017/01/12(木) 21:38:21.22ID:i0JKcY5G0970デフォルトの名無しさん
2017/01/12(木) 21:44:41.00ID:i0JKcY5G0971デフォルトの名無しさん
2017/01/13(金) 16:27:32.91ID:spW6LWtW(ターン!
["AAA","AAB","AAC","ABC","ACC"]
ってやりたいんですがどうやりますか? 但し一杯生成してから余計なの省くのはナシで
0972デフォルトの名無しさん
2017/01/13(金) 16:43:30.15ID:sdnCdlet0973デフォルトの名無しさん
2017/01/13(金) 17:11:30.27ID:Y/PhWwOJ例だけじゃなくて、関数の仕様もできるだけ詳しく教えて
0974デフォルトの名無しさん
2017/01/13(金) 17:13:03.00ID:spW6LWtW0975デフォルトの名無しさん
2017/01/13(金) 17:20:14.39ID:spW6LWtW組合せです。
入力は重複を含む要素のリストで
出力はそのリストからn個選んだリストのリストです
しかし出力に重複は許されません
例えば "AAAAAAA" `combi` 3 == ["AAA"] です
実装に関して、一杯生成してからnubはダメです
例えば "AAAABBB" `combi` 3 == ["AAA","AAB","ABB","BBB"] です
0976デフォルトの名無しさん
2017/01/13(金) 17:26:32.27ID:Y/PhWwOJ後から重複を取り除く方法全般がダメなの?
それとも、たとえばソートしてからグルーピングして
先頭要素だけ取る方法はOK?
0977デフォルトの名無しさん
2017/01/13(金) 17:37:44.30ID:spW6LWtW0978デフォルトの名無しさん
2017/01/13(金) 17:39:24.14ID:spW6LWtWそれはいいです
0979デフォルトの名無しさん
2017/01/13(金) 18:09:13.37ID:KeMBxxc7runlen [] = []
runlen (x:xs) = rl x 1 xs
rl x k [] = [(x,k)]
rl x k (y:ys) = if x == y then rl x (k+1) ys else (x,k) : rl y 1 ys
combi' [] _ = []
combi' [x] y = if x >= y then [[y]] else []
combi' (x:xs) y = [ h : t | h <- reverse [0..min x y], t <- combi' xs (y-h) ]
combi str n =
let xs = runlen str in
let str' = map fst xs in
[ concat (zipWith replicate y str') | y <- combi' (map snd xs) n ]
0980デフォルトの名無しさん
2017/01/13(金) 19:00:59.49ID:spW6LWtWありがとうございます
0981デフォルトの名無しさん
2017/01/13(金) 19:14:20.11ID:Y/PhWwOJそれなら、組み合わせを計算してから、ソート・グルーピング・map head すればいいだけなのでは?
0982デフォルトの名無しさん
2017/01/14(土) 01:09:18.39ID:qkQ2nYQV0983デフォルトの名無しさん
2017/01/14(土) 01:50:04.25ID:qj8F+4RUああ、やっぱそれだとソートしてグルーピングの計算オーダーがnubするのと変わらない事態を招く気がしますのでダメになっちゃいますね
要は愚直実装より速いものが欲しかったのです。重複を含む巨大なリストから数個取り出す組合せをリストアップしようとすれば、愚直実装ではフリーズしてしまいまして
0984デフォルトの名無しさん
2017/01/14(土) 07:24:46.87ID:mdG3n9u6ソート済みリストに対する重複削除はちゃんと定義すればO(n)で動くから
ソートがO(n log n) で動けば全体もO(n log n) になるので
Haskellの一般のリストに対するnub のO( n^2) より速いはず
0985デフォルトの名無しさん
2017/01/14(土) 08:37:41.01ID:z+PGQfymcomb :: String -> Int -> [String]
comb xs = comb' ((group . sort) xs)
where
comb' ys n
| n == 0 = [[]]
| (null . head) ys = comb' (tail ys) n
| (length . concat . tail) ys < n = map ((head . head) ys :) (comb' ((tail . head) ys : tail ys) (n - 1))
| otherwise = map ((head . head) ys :) (comb' ((tail . head) ys : tail ys) (n - 1)) ++ comb' (tail ys) n
こんな感じで組み合わせを求めることはできると思うんだけど速度的には難ありってことなんでしょうか
そのあたりのことを知りたい
0986デフォルトの名無しさん
2017/01/14(土) 09:46:02.22ID:z+PGQfymcomb :: String -> Int -> [String]
comb xs = comb' ((group . sort) xs)
where
comb' ys n
| n == 0 = [[]]
| (null . head) ys = rs
| (length . concat . tail) ys < n = ls
| otherwise = ls ++ rs
where
ls = ((head . head) ys :) <$> comb' ((tail . head) ys : tail ys) (n - 1)
rs = comb' (tail ys) n
汚かったので整えた
0987デフォルトの名無しさん
2017/01/14(土) 13:45:42.41ID:BE8dMuIVcomb xs n
| n == 0 || null xs = [[]]
| otherwise = do
l <- [0..m]
zs <- comb ys (n - l)
if length ys >= n - l then
return $ replicate l x ++ zs
else
[]
where
x = head xs
ys = filter (x /=) xs
m = min n $ (length xs - length ys)
>>985だけど多分こういうやり方のほうがいいのかな
0988デフォルトの名無しさん
2017/01/14(土) 14:38:17.99ID:eAnfzjs/平気で嘘、誤答を書く時もあるし、速度的に?最も正しい答えを書きたがる時もある
0989デフォルトの名無しさん
2017/01/14(土) 23:05:47.30ID:ARUXoNoj0990デフォルトの名無しさん
2017/01/15(日) 10:11:21.74ID:wEixuQp00991デフォルトの名無しさん
2017/01/15(日) 10:47:54.19ID:Lz2CPGKK具体的な指摘はとても勉強になるのでお願いしたいです
Haskellって日曜プログラマには最適な言語なんじゃないかな。アイデアを形にする過程がすごく楽しい
0992デフォルトの名無しさん
2017/01/15(日) 13:07:09.67ID:SnguMZvfかといって科学をただ否定すりゃいいってものでもない
0993デフォルトの名無しさん
2017/01/15(日) 13:30:05.19ID:Lz2CPGKK科学と実用性の駆け引きというのか協力というのか、そういう絶妙な連携は魅力的ですね
ところで組み合わせの問題グルーピングよりも[("A",3),("C",2),...]みたくはじめに個数を数えたほうが少し速くなりました
0994デフォルトの名無しさん
2017/01/15(日) 16:16:50.57ID:40h2fwNv0995デフォルトの名無しさん
2017/01/15(日) 16:26:11.57ID:nEHh2xZn0996デフォルトの名無しさん
2017/01/15(日) 18:02:21.49ID:Vh4eztBk0997デフォルトの名無しさん
2017/01/15(日) 21:36:53.35ID:VKnf+7znスマホ対応が終わってるのがなぁ・・・
今時自分のスマホでも自作アプリ動かしたいですやん
0998デフォルトの名無しさん
2017/01/15(日) 21:52:48.96ID:KJfp/lQK文字をそのまま足すんじゃなくて個数として抽象化した方が良いってことですね。言われてみれば当然ですが勉強になりました
0999デフォルトの名無しさん
2017/01/15(日) 22:08:25.90ID:SnguMZvf発電所みたいに一箇所で大規模にやった方が安いという考えは古いのかも
1000デフォルトの名無しさん
2017/01/15(日) 22:08:43.69ID:zF8FuE9bhttp://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0033
二股にわかれた容器に1から10まで番号のついたボールを番号の大小関係の制約を守って並べていけるかを判定する問題なんですが,自分のコードを提出するとruntime errorになってしまいます.
理由も考えたんですがよくわからないので,何がダメなのかアドバイスをお願いしたいです.
main :: IO ()
main = getContents >>= mapM_ (putStrLn . (\arr -> solve (tail arr) 0 (head arr, 0)) . map (read :: String -> Int) . words) . tail . lines
solve :: [Int] -> Int -> (Int, Int) -> String
solve arr index (box1, box2)
| index == length arr =
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
life time: 646日 20時間 38分 11秒
10021002
Over 1000Thread運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 2ちゃんねる専用ブラウザからの広告除去
★ 2ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
http://premium.2ch.net/
▼ 浪人ログインはこちら ▼
https://login.2ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。