トップページtech
981コメント365KB

関数型プログラミング言語Haskell Part26

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん2014/07/27(日) 13:46:32.03ID:deqguEnh
関数型プログラミング言語 Haskell について語るスレです。

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

前スレ
関数型プログラミング言語Haskell Part25
http://peace.2ch.net/test/read.cgi/tech/1393313450/
0002デフォルトの名無しさん2014/07/27(日) 13:46:59.81ID:deqguEnh
過去スレ一覧
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/
20) http://toro.2ch.net/test/read.cgi/tech/1350428908/
19) http://toro.2ch.net/test/read.cgi/tech/1340760070/
18) http://toro.2ch.net/test/read.cgi/tech/1331902463/
17) http://toro.2ch.net/test/read.cgi/tech/1325510368/
16) http://toro.2ch.net/test/read.cgi/tech/1317958045/
15) http://hibari.2ch.net/test/read.cgi/tech/1310199414/
14) http://hibari.2ch.net/test/read.cgi/tech/1299385928/
13) http://hibari.2ch.net/test/read.cgi/tech/1286706874/
12) http://hibari.2ch.net/test/read.cgi/tech/1272536128/
11) http://pc12.2ch.net/test/read.cgi/tech/1252382593/
10) http://pc12.2ch.net/test/read.cgi/tech/1231861873/
09) http://pc11.2ch.net/test/read.cgi/tech/1211010089/
08) http://pc11.2ch.net/test/read.cgi/tech/1193743693/
07) http://pc11.2ch.net/test/read.cgi/tech/1174211797/
06) http://pc11.2ch.net/test/read.cgi/tech/1162902266/
05) http://pc8.2ch.net/test/read.cgi/tech/1149263630/
04) http://pc8.2ch.net/test/read.cgi/tech/1140717775/
03) http://pc8.2ch.net/test/read.cgi/tech/1076418993/
02) http://pc2.2ch.net/test/read.cgi/tech/1013846140/
01) http://pc.2ch.net/tech/kako/996/996131288.html
0003デフォルトの名無しさん2014/07/27(日) 13:47:30.40ID:deqguEnh
関連サイト

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

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

(以下、日本語)

HaskellJP wiki
http://wiki.haskell.jp/

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

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/
0004デフォルトの名無しさん2014/07/27(日) 13:48:41.85ID:deqguEnh
関連書籍一覧

(アマゾン米国、主に洋書)
http://www.amazon.com/s/rh=n:283155,n:3839,k:Haskell

(アマゾン日本、主に和書)
http://www.amazon.co.jp/s/rh=n:492352,k:Haskell

----
テンプレは以上です。
0005デフォルトの名無しさん2014/07/27(日) 14:05:57.69ID:9qpRUKYw
8月発売予定らしい

●Haskellによる並列・並行プログラミング

Simon Marlow 著
山下 伸夫、山本 和彦、田中 英行 訳
336ページ
定価3,888円(税込)
ISBN978-4-87311-689-1
0006デフォルトの名無しさん2014/07/29(火) 00:21:24.45ID:60YprUPc
[´・_ Haskellによる並列・並行プログラミング買えぽよ
0007デフォルトの名無しさん2014/07/29(火) 10:17:31.50ID:vGNmyN6L
Haskellってなんであんな容量でかいの?
0008デフォルトの名無しさん2014/07/29(火) 12:25:09.20ID:NZfP/Nly
Ajhc はフットプリント小さいよ
0009デフォルトの名無しさん2014/07/29(火) 13:09:17.04ID:NY6VhvsC
Integer と Int が同じ幅じゃん。
0010デフォルトの名無しさん2014/07/30(水) 04:03:32.33ID:HugqqWEX
ランタイムシステムの上で動くからじゃね?
Javaでいうところの仮装機械が同梱されてるってことじゃね?
0011デフォルトの名無しさん2014/07/30(水) 07:50:18.87ID:cLkIAZiJ
マスカレードマシン...実身/仮身システムかな?(痴呆
0012デフォルトの名無しさん2014/07/30(水) 08:51:49.84ID:HugqqWEX
つまり、RTSを別途配布すれば良いんだよ
MinGWで正規にインストールしとかないと何とかdllが見つかりませんって言われるように
bokunokangaetasaikyounoprogram.exeとrts.dllで動くようにすれば良いんだよ
0013デフォルトの名無しさん2014/07/30(水) 14:42:30.44ID:cLkIAZiJ
cabal の依存関係を解決してリリースしたら
こんどは実行環境で DLL hell に悩まされるんですね(白目
0014デフォルトの名無しさん2014/07/30(水) 23:35:59.41ID:OyX0E7FM
Haskellのシンタックスシュガーを全部取っ払うと(型の宣言などを取り除いた)プログラムの
文法は「型のついたラムダ計算」みたいになると思うけどそういうコア機能の解説した文書って
なかったっけ
0015デフォルトの名無しさん2014/07/31(木) 00:50:43.58ID:+4UhtKUa
言語仕様(The Haskell 2010 report)で説明のために非形式的に使ってるのとか、
あるいはGHCの実装で使ってるこれかな? https://ghc.haskell.org/trac/ghc/wiki/Commentary/Compiler/CoreSynType
0016デフォルトの名無しさん2014/07/31(木) 01:18:38.30ID:zRIxs7zz
lambdaをコア機能とするのは無理があると思う
例えばletはlambdaのシンタックスシュガーにならない
○ let i x = x in (i 0, i "A")
× (\ i -> (i 0, i "A")) (\ x -> x)

むしろlambdaを使わないpointfreeがコアだ
0017デフォルトの名無しさん2014/07/31(木) 09:51:43.95ID:v4mxhrx0
>>15
GHCの実装の説明のページへのリンクをありがとうございます。

Haskell2010 chap3で、シンタックスの説明に使われてるのがそれみたいですね。



>>16
let i x = x in (i 0, i "A") では i が多相関数 i :: α->α になって、in の中で
適切な型に推論されて適用されるのに対してラムダ式 (\ i -> (i 0, i "A")) (\ x -> x) では
「(\ x -> x)を多相のまま適用できない」ためにうまくいかないのでしょうか。

Scheme からの連想で let は lamnda で書けると思い込んでいたので、この面白い例をもっと
研究してみます。ありがとうございます。
0018デフォルトの名無しさん2014/07/31(木) 10:00:46.45ID:tnsvQYR5
>>17
schemeだとできるの?動的だからいいのか
0019デフォルトの名無しさん2014/07/31(木) 10:48:12.90ID:v4mxhrx0
>>18
Revised5 Scheme 7.3 で let は派生式になってます。(SchemeマニアじゃないのでR6とかは知りませんが)


わかりやすい解説は例えば SICP 1.3.2 。
( ttps://github.com/minghai/sicp-pdf/blob/japanese/jsicp.pdf だと pp.66-67 のあたり )
0020デフォルトの名無しさん2014/08/03(日) 21:36:58.94ID:Tmfa1Mht
Haskell Platform 2014.2.0.0 はいつ正式リリースかな
0021デフォルトの名無しさん2014/08/04(月) 19:53:21.28ID:380FSYFH
諸君、暑さで議論がお留守だよ
0022デフォルトの名無しさん2014/08/05(火) 09:31:07.66ID:xIiEYlRK
チラ裏メモ

Haskell のカーネル(≒言語から desugar して残るコア機能)は System FC という
System F の変種。 FC が F と違う部分は GADT なんかのための何からしい。

System F については、例えば TaPL に簡単に触れられており let ... in がλ抽象と
別立てになった機能になってる。

こっからは推測だけど(推測なんかしてる暇あったら読めよという話だが)上で触れられてる
ような事情で let ... in を lambda のシンタックスシュガーとは出来なかったのでλ抽象と
別の機能になってるのかなぁ思った。
0023デフォルトの名無しさん2014/08/06(水) 00:53:41.89ID:9Hv8k9mx
推測する間に読めるとか早すぎだろ
0024デフォルトの名無しさん2014/08/07(木) 09:23:36.30ID:gF5gxzdj
東京電力福島第一原子力発電所の事故の検証で、3号機ではこれまでの推定より早く燃料が溶け出し、大部分が原子炉から格納容器に溶け落ちたとする新たな解析結果がまとまり、
東京電力は今後の燃料の取り出しがより難しくなるおそれもあるとして詳しく調べることにしています。

3年前の原発事故を巡り東京電力は未解明の問題の検証を続けています。
このうち、3号機では、バッテリーで動いていたHPCIと呼ばれる緊急用の原子炉の冷却装置を事故の2日後の3月13日の未明に運転員が手動で停止し、
ポンプによる注水に切り替えようとしましたが、うまくいかず、原子炉の冷却の遅れにつながったと政府の事故調査で指摘されました。

これについて、東京電力が原子炉の圧力などのデータを分析したところ、HPCIは手動で停止するより前の3月12日午後8時ごろには、機能を失ったとみられ、
解析の結果、これまでの推定より5時間余り早い3月13日の午前5時半ごろから、燃料が溶け始めて翌14日の午前6時ごろには、原子炉の底を突き破り、
大部分が格納容器にまで溶け落ちた可能性があると分かったということです。

これまでは格納容器に溶け落ちた燃料は一部と考えられていて、東京電力は今後の燃料の取り出しがより難しくなるおそれもあるとして詳しく調べることにしています。
また今回、東京電力は、消防車を使った注水が行われた2号機の原子炉内で燃料と水が反応して水素とともに大量の熱が発生し、メルトダウンに拍車をかけたという新たな解析結果をまとめました。
消防車を使った注水が、原子炉の構造上燃料を十分冷やすことができなかったためと推定していて、深刻な事故の進展を食い止めることの難しさを示す結果として注目されます。
0025デフォルトの名無しさん2014/08/08(金) 03:04:23.61ID:W/TCi66w
http://www.buzzword.jp/img/face10.png
0026デフォルトの名無しさん2014/08/08(金) 06:06:23.58ID:Jx11NGmL
氷投入1日27トンに倍増、汚染水の凍結難航 福島第1原発

東京電力福島第1原発の海側トレンチ(電源ケーブルなどが通る地下道)の凍結止水工事が難航している問題で、
東電は7日、汚染水の水温を下げるため、トレンチと2号機タービン建屋の接続部付近で投入している氷の量を、
これまでの1日当たり約15トンから約27トンと倍近くに増やしたと発表した。ドライアイスも本格的な活用を決め、約1トンの投入を始めた。

東電によると、7月30日から氷を約15トンずつ投入。水温は低下傾向にあるというが、
水面付近で思うように下がらなかったため、投入量を増やした。

第1原発では、2、3号機のタービン建屋につながるトレンチに高濃度の汚染水計約1万1千トンがたまっており、
海洋への流出が懸念されている。東電は接続部を凍結止水後、汚染水を抜き取る予定。
0027デフォルトの名無しさん2014/08/09(土) 19:19:00.11ID:AoGp5qFd
すき屋等のブラック労働は適当に嘘ついて手抜き労働しないと殺される
STAPのデータ捏造もコピペ論文も
こういうある種のストライキの1つなんだけど
経営者視点()な人達だけはすごい剣幕で怒ってるよな

同じ人が、すき屋ストライキでも同じように怒ってた
0028デフォルトの名無しさん2014/08/10(日) 00:12:50.41ID:D0upaz60
>>27
経営者視点なんて概念を説明する暇があったら、人権を守れっていう方が効率が良い

犯罪者の人権を尊重しないと、嘘をついた詐欺師が殺される
0029デフォルトの名無しさん2014/08/11(月) 12:23:07.49ID:yuEuk23d
Haskell Platform 更新おめでとう
0030デフォルトの名無しさん2014/08/11(月) 12:41:34.81ID:DFCFAZvQ
ありがとう
0031デフォルトの名無しさん2014/08/11(月) 19:17:00.63ID:nlAZIESh
どういたしまして
0032デフォルトの名無しさん2014/08/11(月) 20:27:21.97ID:uEhfkD4p
はしゅけるだいしゅき
0033デフォルトの名無しさん2014/08/11(月) 20:37:36.95ID:ybZhJtmE
そうか。
0034デフォルトの名無しさん2014/08/11(月) 21:12:29.62ID:UhWE92ZL
玄人はプラットフォームの力を借りずにghcから環境を自分でビルドしていくと聞く
0035デフォルトの名無しさん2014/08/11(月) 21:59:10.16ID:ybZhJtmE
玄人はそれを出来ると思うけど、そうすべき理由がなければプラットフォームを使うよ。
だって楽だし、 Haskell を使うのが目的であって環境構築が目的じゃないもの。
0036デフォルトの名無しさん2014/08/11(月) 22:57:25.72ID:YYeip9Qz
cabal-devの時代からどうせsandbox使うからってことでハスプラは使ってないな
0037デフォルトの名無しさん2014/08/12(火) 07:28:55.91ID:8BeZUND4
 福島第一原発の汚染水対策として、地下の坑道を凍らせて水を止める工事で、凍結の“切り札”として投入されたドライアイスの効果が表れていないことが分かりました。

 国と東電は、高い濃度の汚染水がたまる地下の坑道に金属性の管を設置し、冷却液を流して汚染水ごと凍らせる作業を続けてきました。
しかし効果が表れないため、先月30日からは氷の投入を始め、今月11日朝までの間に、合わせて222tの氷を投入しました。
東電は11日の会見で、凍結の効果について「分からない」としていて、目に見える成果が出ていないことを認めました。
さらに、凍結の“切り札”として7日にドライアイス1tを投入しようとしたところ配管が詰まってしまい、それ以降はドライアイスの投入を見合わせているということです。
一方、汚染水の発生を減らすため、原子炉建屋の周囲の井戸水をくみ上げて浄化する計画について、東電は、12日に試験的にくみ上げを始め、20日にも浄化を始めることを明らかにしました。
0038デフォルトの名無しさん2014/08/12(火) 10:11:47.08ID:8BeZUND4
停止中の仏製の汚染水処理装置を廃止へ
この装置の導入や維持にかかった費用については「経営にかかわることで公表できない」
0039デフォルトの名無しさん2014/08/12(火) 15:22:46.18ID:oPINzQjd
依存地獄は根本的に解決できないものなの?
それともCabalの管理が稚拙だから砂場が必要になるだけ?
0040デフォルトの名無しさん2014/08/12(火) 21:58:16.05ID:hAPjyp1O
dephellはHaskell自体の問題
再エクスポートと、高速化の為の激しいinline展開を伴う最適化のせい
0041デフォルトの名無しさん2014/08/12(火) 23:28:01.46ID:zwRvTzf5
依存地獄は根本的に解決不可能な問題ではないが、Haskellは本気で向き合うつもりはないらしい

こういうことですか?
0042デフォルトの名無しさん2014/08/12(火) 23:40:13.99ID:eIpNFM7l
俺には根本的に解決不可能な問題に見えるけどな
0043デフォルトの名無しさん2014/08/13(水) 01:21:14.25ID:+K9v/oty
根本的解決を云々する前に根本的解決とはいかなる状態を指すのか考えてみたほうがよい。

何らかのライブラリ整備組織が存在しない以上、ライブラリのバージョンで挙動が変わるのを
禁止する方法はないし、色々な依存関係を適当に手で書いてそれが正しいという保証がないのも
当然。

根本的解決をするためにはPrelude よりでかい標準ライブラリを制定する必要があると思うけど
それはHaskellが完成するという方向性を目指していて、転石苔を生ぜず的なローリングストーンズ
的ロック・スピリットと合わないわけですよ。

永遠に未完成。それがHaskell道なんや。
0044デフォルトの名無しさん2014/08/13(水) 11:56:38.29ID:dXRsobnE
根本的な解決状態は、
ライブラリで動作していた機能も含めて全てのソースを一人で書いて、
単一のコンパイラでビルドし、
開発環境OSを含めて配布する。

まずはこれが可能かどうかを議論したまへ。
可能でないならばどこまで可能か、あるいは状態の再定義を述べたまへ。
0045デフォルトの名無しさん2014/08/13(水) 12:21:23.87ID:+hRgNmRJ
Cabal地獄を避ける
http://softwaresimply.blogspot.jp/2014/07/haskell-best-practices-for-avoiding.html
0046デフォルトの名無しさん2014/08/13(水) 15:04:25.36ID:M/yU7i7Q
低放射線量の生体に対する影響って、夏休みの自由研究の課題に良いよね
0047デフォルトの名無しさん2014/08/13(水) 18:41:12.72ID:TT8FY689
>>43
挙動の変化が駄目ならあらゆる言語のあらゆるライブラリがdep hellを起こす、が現実はそうでもない
0048デフォルトの名無しさん2014/08/13(水) 20:56:21.71ID:EvyR27Lg
依存性の解決アルゴリズムがいかに華麗でも、元になる依存情報の記述が一箇所だけでも誤ってるとぐちゃぐちゃになるもんな。
現実はぐちゃぐちゃなので、それを綺麗な枠組みに押込めるのには限度がある。
枠からはみ出る逃げ道をうまいこと作らなきゃならなくて、それは必ずしも綺麗ではないし、ときどきおかしなことにもなったりする。
ま、しょうがないよね。 なるべく上手いことやって欲しいとは思ってるけども。
0049デフォルトの名無しさん2014/08/16(土) 18:43:48.26ID:IJ96r3S9
Monad m => (a -> m b) -> m (a -> b)
な変換関数って作れる?
0050デフォルトの名無しさん2014/08/16(土) 23:15:13.14ID:kmNc6WW8
福島第一原子力発電所の周辺で、遺伝子レベルで突然変異が起こった植物や動物が見つかった。

福島県では、放射能に汚染された地域で育つ稲の防御遺伝子が活性化され、DNA複製に作用し、異変が起こったという。
日本全土に分布するヤマトシジミ(蝶)の体長は著しく減少した。 また死亡率も高まり、発育異常もみられるようになった。「ガゼータ・ルー」が伝えた。
福島に巣をつくっているツバメの形態異常も増加している。研究者たちは、チェルノブイリと福島での事故による生物学的影響は似ているとの見解を示している。
0051デフォルトの名無しさん2014/08/17(日) 01:45:09.04ID:Wn5e8U44
VORがどういうサイトか知らんのやな(´・ω・`)
0052デフォルトの名無しさん2014/08/17(日) 09:56:49.28ID:Z/8EUSKX
>>49
無理
0053デフォルトの名無しさん2014/08/17(日) 13:34:21.25ID:N5Houqaz
>>52
サンクス。
0054デフォルトの名無しさん2014/08/17(日) 13:35:27.88ID:N5Houqaz
foldとunfoldの組み合わせで、全部の再帰関数がかけますか?
0055デフォルトの名無しさん2014/08/17(日) 13:43:52.38ID:SWriwsrF
>>49
--f :: Monad m => (m a -> m a) -> m (m a -> a)
f g = do {
h <- f id;
r <- return return;
r (h . \ x -> g x >>= (r . const) >>= \ c -> return (c x))
}
--f' :: Monad m => (a -> m b) -> m (a -> b)
f' g = f id >>= \ h -> return (h . g)
0056デフォルトの名無しさん2014/08/17(日) 14:15:53.57ID:XkL8f3FM
>>54


たとえば2つのリスト xs と ys が等値であるかを判定する再帰関数は、
fold と unfold だけでは定義できない(.... はず)
0057デフォルトの名無しさん2014/08/17(日) 17:55:59.62ID:LI/z4tC5
>>56
質問者とは別人格なんだけど興味沸いてきた。

そういうのが定義できないこと(できること)を証明するのは、どういった学問分野なの?
ちょっと学んでみたい。
0058デフォルトの名無しさん2014/08/17(日) 17:57:39.57ID:LI/z4tC5
>>56
すまん、別人格じゃねぇ。別人、赤の他人だ。
0059デフォルトの名無しさん2014/08/17(日) 18:47:14.74ID:XkL8f3FM
>>57
いや、証明はしていない(自分じゃ証明できない)
質問が「すべての x についてできるか?」だったから、
その反例を1つ示しただけ
ただし反例といっても、自分のプログラミング技術では
そうあがいても >>56 の再帰関数が書けなかったというだけ
だから末尾に「.... はず」と付け加えた
もし書ける人がいれば、コードで示してもらえばとても嬉しく思う

なお、圏論(という学問分野?)には射(morphism)という概念があって:
・関数 fold の一般化を Catamorphism
・関数 unfold の一般化を Anamorphism
と呼んでいる
このモルフィズムという概念上では整数やリストに関する代数法則が
形式的に定義されているから、その法則の範囲内で全ての関数を定義できるらしい
(ただし自分じゃ証明できないから、この説明はあくまで受け売りにすぎない....)
たとえば >>56 の再帰関数は Catamorphism を使えば書ける

Catamorphism に関しては以下で解説されている
・Catamorphisms - HaskellWiki
 http://www.haskell.org/haskellwiki/Catamorphisms
Catamorphism 以外のモルフィズムについては、
上記ページの参考文献の一つ:
 " Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire"
で解説されている
0060デフォルトの名無しさん2014/08/17(日) 19:10:23.56ID:fTsIPyRy
Haskell知らないけど。foldってリストに対してのループ処理だろう?
foldとか使わなくても、先頭から1つずつ取り出して一致を調べるだけで、全く使わなくても出来るんじゃないか?
使わないといけないっていう絞り?
0061デフォルトの名無しさん2014/08/17(日) 20:02:45.55ID:XkL8f3FM
>>60
Haskell を知らない初心者さんならば
過去に別スレで類似の質問があったから、
先にそちらを一読したほうがいいね

・【アンチ】関数型言語は使えない【玩具】 2
  http://peace.2ch.net/test/read.cgi/tech/1330429547/413-418
0062デフォルトの名無しさん2014/08/18(月) 10:35:15.97ID:9zqJA8S0
再帰かループを使えば、2つのリストの一致を調べられるだろうとおもったけど。
そうでなく、再帰もループも使わずに、特別なループ処理(fold、unfold)で代替可能か?ということか。
0063デフォルトの名無しさん2014/08/18(月) 10:51:17.18ID:9zqJA8S0
unfoldで、リスト個数分以上の自然数列をつくり、それに対してfoldして
そのfold処理中リストA、Bが参照出来るとすれば、
A、Bの先頭を取り出だして比較してその論理積を求めたらいいのでは?
0064デフォルトの名無しさん2014/08/18(月) 14:39:42.37ID:xsIOXmUJ
>>62
質問者ですが、その通りの意図で聞きました。

再帰やループよりも、fold,unfoldの方が簡単です。
再帰やループはかなり力が強いので、できるだけ使いたくない。ならばどこまでfold,unfoldで置き換えられるのか、が気になっていました。
0065デフォルトの名無しさん2014/08/18(月) 16:32:22.13ID:4Y8RmR8S
力が強いとは?
0066デフォルトの名無しさん2014/08/18(月) 17:56:30.96ID:2pXqpQB0
>>65
> 力が強いとは?
できることが多い、という意味です。
0067デフォルトの名無しさん2014/08/18(月) 18:14:25.07ID:2pXqpQB0
再帰は、停止しない計算を簡単に作ることができる。
fold f xs が停止しないのは、xsが
長いか、あるいはfが停止しない場合に限られる。
unfold f z が停止しないのは、fがNothingを返さない場合に限られる。

再帰は、遅い計算を容易に作ることができる。
チューニングする際には、末尾再帰になるように気をつけなくてはいけない。
fold/unfoldで作れば、融合変換が使える。分かりやすく、自動化も容易。

...というのが、今のところの自分の理解です。
0068デフォルトの名無しさん2014/08/18(月) 21:02:32.07ID:bozM1Zhv
福島第1原発の地下トレンチ(地下道)にたまった高濃度汚染水をせ
き止めるための「氷のフタ」が、3カ月以上たってもまったく凍らない。
7月末からトレンチの汚染水と建屋の接続部分に300トンに上る氷
を投入、今月7日はドライアイス1トンも投じたがいまだに凍結してい
ない。

19日の原子力規制委員会では別の工法が議題に上がるという。
その工法とは「資材グラウト」の注入が濃厚だ。
「資材グラウト」は水中で固まるコンクリートのこと。
つまり凍結をあきらめ、コンクリ投入によって固めてしまうつもりだ。

「手詰まりが鮮明になったということです。仮にコンクリ投入で一時的
 に遮断しても、劣化した隙間やヒビ割れ部分からすぐに汚染水が漏
 れ出すでしょう。モグラ叩きみたいなもので、根本解決にはなりません」
 (元大阪市立大学大学院教授の畑明郎氏=環境政策論)

さあ、こうなると同じ方式で進めている「凍土壁」造りもどうなるやら。

「寒冷地の川を見ても分かるように、流れている水を凍結させるのは
 至難の業です。
 東電は地下水の流量と速さの想定を見誤ったのでしょう。
 もともと懸念されていた工法を見切り発車した結果がこれですか
 ら、目も当てられません」(畑明郎氏)

凍土壁に投じる国の予算は320億円。「残念」では許されない。
0069デフォルトの名無しさん2014/08/18(月) 23:32:51.97ID:sIBxNP11
京でシミュレーションしたので凍ります。
絶対凍る!
凍らないような間違った世界なら滅ぶべき。
0070デフォルトの名無しさん2014/08/20(水) 16:53:30.25ID:kxA5WDK0
>>55
お礼が遅れました。ありがとうございました。
一読してサッパリ意味がわからないのですが(個々の要素は解るのに…)、後で解析してみます。
こういうのがサラッと出てくるのがすごい
0071デフォルトの名無しさん2014/08/20(水) 17:03:18.41ID:kxA5WDK0
>>56
zipがunfoldで書けるので、出来そうな気がします。
0072デフォルトの名無しさん2014/08/22(金) 19:00:20.20ID:JI+TB47e
ところでEmacsのInf-haskell-modeがオワコンだと聞いて、interactive-haskell-modeを試そうと思ったのだけど、そもそもhaskell-mode 13.7のコンパイルが通らない...
0073デフォルトの名無しさん2014/08/23(土) 13:15:18.71ID:7c4Srh2g
そういうプラグインってセキュリティ大丈夫なの?
大切なソースコードがうっかり中国のサーバーに送られてるとかない?
0074デフォルトの名無しさん2014/08/23(土) 16:34:02.27ID:aw2EPyB4
basic-preludeがダメだ。
Applicative,Monoid,Text,Arrowなどの使える奴らをエクスポートしたモジュールで、NoImplicitPreludeを宣言してPreludeを置き換えて使う。
確かに便利だが、Stringの代わりにTextを文字列入出力のインターフェースにするために、Showクラスを隠蔽しているのが良くない。
Deriving Showのために、クラスはエクスポートされているけど、メソッドは公開されてない。
自分でShowインスタンスを書けないのは辛い。
0075デフォルトの名無しさん2014/08/23(土) 18:51:05.34ID:QIS6Ua3n
 広野町に来春開校する県立中高一貫校「ふたば未来学園高」を支援するため各界の著名人で結成した「ふたばの教育復興応援団」に、
俳優西田敏行さん(郡山市出身)ら6人のメンバーが新たに加わった。小泉進次郎復興政務官が21日、発表した。
 新メンバーは西田さんのほか郡山市出身のクリエーティブディレクター箭内道彦さん、福島市の詩人和合亮一さん、
東進ハイスクール講師林修さん、作詞家秋元康さん、米国マサチューセッツ工科大メディアラボ所長伊藤穣一さん。
 メンバーは既に発表されている世界的建築家の安藤忠雄さん、作家乙武洋匡さんら11人と合わせ17人になった。
 同日、復興庁で記者会見した小泉政務官は「生徒たちが海外とつながるような取り組みをしたい、との地元の声を踏まえた人選でもある。
メンバー全員が『前例なき環境には前例なき教育を』との思いを共有している。一人でも多くの志願があることを期待している」と語った。
小泉政務官は秋元さんに校歌の作詞を依頼し、前向きな反応を得ていることも明らかにした。
 復興庁と文部科学省、県教委が連携し支援する。双葉郡の教育に地元の子どもの声を反映する「双葉郡子供未来会議」から提案を受けた
双葉地区教育長会が5月に外部講師の派遣などを小泉政務官に依頼していた。
応援団は県立中高一貫校の高校1年生に「総合的な学習の時間」を中心とし、年間計100時間の授業を担当する。
0076デフォルトの名無しさん2014/08/23(土) 21:16:35.23ID:srcvgKjH
Preludeで、negate $ abs (-5) は実行できるのに、map (negate $ abs) [5,-7,0] がエラーになるのは何故なの?
0077デフォルトの名無しさん2014/08/24(日) 00:41:38.35ID:NnEL9u+d
>>76
negate $ abs (-5) = negate (abs (-5)) = (negate . abs) (-5)
($)は関数に値を適用する。f $ x = f x
(.)は二つの関数を合成する。(f . g) x = f (g x)
つまり、map (negate . abs) [5,-7,0] でオッケー
0078762014/08/24(日) 01:39:40.10ID:/I8ON4w5
レスどうもです。
関数合成で行けるのは分かるのですが、mapで$がダメなのはどう理解すればよいのかと思いまして。

で、その後考えたのは…mapでリストの値を negate $ abs に食わせる前に、(negate $ abs) 単体で解釈されて negate に
関数 abs を値として食わせようとしてエラーなんでしょうか
0079デフォルトの名無しさん2014/08/24(日) 07:10:27.52ID:5BU5W7L5
>>78
単純に型エラー
0080762014/08/24(日) 09:19:37.95ID:e58XmNWt
結果は型エラーですが答えが欲しいです
0081はちみつ餃子 ◆8X2XSCHEME 2014/08/24(日) 09:40:13.68ID:a2Tu8Eqr
そうだよ。 >>78 の理解でいいよ。 演算子 $ は x $ y = x y でしかない。
foo a b $ bar c d が foo a b (bar c d) になるのは関数適用の方が優先順位が高いから。
0082762014/08/24(日) 09:54:07.26ID:e58XmNWt
解答thanksです
0083デフォルトの名無しさん2014/08/24(日) 18:33:55.50ID:NnEL9u+d
.ghcファイルってないんですかね
.ghciファイルに :set -XOverloadedStringsとかの言語拡張を並べてghciしてるんですけど、
runghcできないことに気づいて困ってます。
0084はちみつ餃子 ◆8X2XSCHEME 2014/08/24(日) 21:44:28.05ID:a2Tu8Eqr
LANGUAGEプラグマを使えばいいんじゃないの。
0085デフォルトの名無しさん2014/08/24(日) 23:52:37.36ID:NnEL9u+d
>>84
8_20.hs
8_21.hs
8_22.hs

みたいに、練習や実験の目的で細かくファイルを作ってるんです。
ライブラリをつくるつもりは無いから、何をインポートするとか、どの言語拡張が必要だとか、いちいち気にするのはめんどくさいです。
importはまとめられるけど、言語拡張はどうにもならなくて悩んでます。
0086デフォルトの名無しさん2014/08/25(月) 18:28:49.73ID:gFXOELGs
>>85
必要なフラグを全部まとめてシェルのエイリアス(かシェルスクリプトかバッチファイル)にすればいいんじゃないか
0087デフォルトの名無しさん2014/08/25(月) 19:51:53.34ID:8juLYpPY
>>86
やっぱりそれしかないんですかね…
練習用のファイルは一箇所にまとめてあるのですが、
そのディレクトリ内でのみフラグが有効になるシェル関数で包むか、
あるいはghc4etudeみたいなエイリアスをつくってそれを使うようにするか。
前者はディレクトリのパスが変わった時壊れるし、
後者は忘れるというデメリットが。

ディレクトリが切り替わる度、自動的にそのディレクトリ直下の.zshrcを読み込んでくれればいいのになあ
0088デフォルトの名無しさん2014/08/25(月) 22:52:08.74ID:jOpvdwt6
東京電力福島第一原子力発電所の事故で、吉田昌郎元所長が政府の
事故調査・検証委員会に対し、非常用の冷却装置が止まっていたことなど
重要な情報を把握できていなかったことを「猛烈に反省している」と述べるとともに、
吉田元所長に判断が集中した事故対応の在り方について課題を指摘していたことが分かりました。
専門家は「新しい知見を生み出しながら、事故の教訓を別の視点から伝え、
解釈していくことが重要だ」と、吉田元所長の証言を公表することの意義を指摘しています。

非常用冷却装置
事故当日、最も早くメルトダウンした福島第一原発1号機では、すべての電源が失われた3月11日の午後3時半ごろから、非常用の冷却装置がほとんど動いていませんでした。
政府の事故調査・検証委員会の調べによりますと、現場の運転員も、当初は1号機の非常用の冷却装置が止まっていたことを明確には疑っていませんでしたが、夕方になって深刻な状況に気付きます。
ところが、この情報は吉田元所長には伝わらず、冷却装置は動いていると信じていて、ようやく事態を把握したのは、格納容器の圧力が異常に上がっていると報告を受けた午後11時50分ごろでした。
こうした重要な情報を把握できていなかったことが、原子炉への注水や格納容器の圧力を下げる「ベント」と呼ばれる作業の大幅な遅れにつながったと指摘されています。
これについて、吉田元所長は政府の事故調査・検証委員会に、「猛烈に反省しているんですけれども、少なくとも現場側からのSOS発信がこちらに届いていなかった」と述べ、
非常用の冷却装置が止まっていることを疑っていた現場の情報を把握できなかったことを悔やんでいます。
そして、「IC(非常用冷却装置)は大丈夫なのかということを何回も私が確認すべきだったと、逆に言いますとね、
今の時点に立って言うとそこは思い込みがあって、水位がある程度確保されているから大丈夫かなと思っていた部分があります」と話し、
現場の責任者として判断を誤ったことを率直に認めています。
0089デフォルトの名無しさん2014/08/26(火) 02:32:00.76ID:taZpdeNs
import Data.List (find)
import Data.Char (digitToInt)

findTo :: Int -> Maybe Int
findTo n = find ((n==) . sum. map digitToInt . show) $ [1..(10^21)]
findTo' :: Int -> Maybe Int
findTo' n = find ((n==) . sum . map digitToInt . show) $ [1..(10^20)]

ghci> findTo 27
Nothing
ghci> findTo' 27
Just 999

find以外を使えばこういうことは起らないんですかね?
さいきん勉強しはじめたので、まったく原因が分らないです。

ちなみに、すごいHaskellたのしく学ぼう の6章あたりの問題です。
0090デフォルトの名無しさん2014/08/26(火) 02:51:38.80ID:8Iqh8exi
>>89
うむむ
俺の環境では両方Just 999...
0091デフォルトの名無しさん2014/08/26(火) 08:41:01.12ID:taZpdeNs
>>90
まじですか。

じゃあ、自分のghci(あるいはマシン)がおかしいのかな。
[1..(10^21] の、21をもっと大きくするとどういう挙動をします?
0092デフォルトの名無しさん2014/08/26(火) 09:11:29.85ID:hD8o6UA4
型シグニチャとfindの型から型推論により[1..(10^21)] :: [Int]が決まって
(10^21)::Intがオーバーフローで負の数になるから[1..(10^21)] == []
そこからfind _ [] == Nothingより件の結果になると
一方ghci上で型シグニチャなしならInteger型と解釈されてJust 999になる
0093デフォルトの名無しさん2014/08/26(火) 10:26:48.77ID:Bz7iEF70
ここから、『おかしいなと思ったら:t itしろ』という教訓が得られるのだな!
名付けておっぱい訓だ!
0094デフォルトの名無しさん2014/08/26(火) 18:28:29.24ID:taZpdeNs
>>92
なるほど、納得できました。
ありがとうございます。
0095デフォルトの名無しさん2014/08/28(木) 00:24:04.81ID:6GGU5CTn
最近のHaskellプラットフォームからdoctestを構築すると、
prop> のテストできなくなっている?
0096デフォルトの名無しさん2014/08/29(金) 12:11:01.07ID:iLRKQaF8
幾重にもネストした空リスト( [[]], [[[[]]]] とか )を受け取って
ネストの深さを調べる関数を作りたいんだけど、いい方法ある?

通らないけどこんなイメージのやつ
nestDepth [] = 1
nestDepth [x] = 1 + nestDepth( x )
0097デフォルトの名無しさん2014/08/29(金) 21:33:01.98ID:xREiHvuj
東京電力は29日、福島第1原発3号機の使用済み燃料プールで、
撤去作業中に重さ約400キロのがれきを誤って落下させたと発表した。
けが人はなく、放射線量の上昇も確認されていないという。
0098デフォルトの名無しさん2014/08/29(金) 22:18:40.33ID:PzKyZEs+
>>96
ここのflattenをこねこねしてみたけど僕には無理でした
http://stackoverflow.com/questions/5994051/is-there-a-function-to-flatten-a-nested-list-of-elements
Haskellむずかしい...
0099デフォルトの名無しさん2014/08/29(金) 22:30:53.46ID:6XulYCBt
>>96,98
ネストしたリストと考えるよりも、
ツリー(RoseTree型)の高さを求める問題として見た方が
いくらか楽かもしれない
0100デフォルトの名無しさん2014/08/30(土) 00:31:21.91ID:Y20ucU8a
class Nest a where {depth :: Num b => a -> b}
instance Nest a => Nest [a] where {depth [] = 1; depth (x:_) = 1 + depth x}
instance Nest () where {depth _ = 0}
main = print $ depth [[()]]

これは再帰じゃなくてオーバーロードだから
0101デフォルトの名無しさん2014/08/30(土) 00:47:16.39ID:uVxlss9L
100さんと同じような回答に達したけど、
() を消す方法は思いつかない…
0102デフォルトの名無しさん2014/08/30(土) 01:01:18.23ID:Z2Y9Ssnq
[] の型が決まらんことには仕方なかろ
0103デフォルトの名無しさん2014/08/30(土) 01:03:22.56ID:DhxHtAEm
やっぱ型がないとNest a型か判断できないよね。
0104デフォルトの名無しさん2014/08/30(土) 05:52:45.84ID:D+i8yOva
Haskell の力はこんなものなのかよ…!
0105デフォルトの名無しさん2014/08/30(土) 09:34:01.69ID:eQyqwaUC
{-# LANGUAGE TypeFamilies, DataKinds, TypeOperators, UndecidableInstances, FlexibleContexts #-}

import GHC.TypeLits
import Data.Proxy

type family F a :: Nat where F ([] ([] b)) = 1 + F ([] b) ; F a = 1

proxy :: [a] -> Proxy (F [a])
proxy xs = Proxy

depth :: KnownNat (F [a]) => [a] -> Integer
depth = natVal . proxy

main = print $ depth [([]::[()])]

値としての()は消えるが型アノーテーションが必要になり余計に面倒臭くなった
0106デフォルトの名無しさん2014/08/30(土) 19:35:22.28ID:kHvbMa0v
すごいhaskellの「関数もアプリカティブだよ」で、<*>の定義が

f <*> g = \x -> f x (g x)

って出てくるけど、コンビネータで同じ形のがいた気がする。偶然なの?それとも深いわけあり?
0107デフォルトの名無しさん2014/08/30(土) 20:49:37.63ID:Y20ucU8a
type D a b = a (a (a (a (a (a (a (a (a (a b)))))))))
-- type H a b = D (D a) b
type H a b = D a (D a (D a (D a (D a (D a (D a (D a (D a (D a b)))))))))
newtype Foo = Foo {foo :: H [] ()}
bar = print $ depth $ foo $ Foo [[[[]]]]

LiberalTypeSynonymsを使うかどうか迷う
0108962014/08/30(土) 22:47:26.33ID:qDjO7Zt2
みなさん議論ありがとうごいます、興味深く見させていただいてます

>>100 >>101
動いて感動しました!()入れて[]の型が定まるようにしてるんですね

>>102 >>103
問題を簡単にしようと安直に空リストにしたんですが…
よくよく考えると空リストって型決まってなくて厄介ですね
[[0]]、[0]とかならもっとシンプルにできたり?()と同じ効用になりそうだけど…

>>105
動かなかった…どうもData.Proxyないっぽいんで取ってきます
0109デフォルトの名無しさん2014/08/31(日) 07:08:40.89ID:MBS6riJW
haddocの導入を考えています。いくつか質問させてください。

1. ドキュメントの本文に日本語は使えますか。
2. hackageにアップしていないモジュールのドキュメントを生成することができますか。
3. それをローカルにあるhoogle(コマンド)から検索することは可能でしょうか。
4. 図の挿入ができるらしいのですが、フォーマットは何が使えますか? svgは含まれますか? gifアニメはどうでしょうか。
0110デフォルトの名無しさん2014/08/31(日) 09:26:12.72ID:xb4yMGmi
>>106
コンビネータなら (<*>) と pure から flip を作れるんだが
アプリカティブはなぜか flip に相当するものを作れない
モナドでも作れない >>49
0111デフォルトの名無しさん2014/08/31(日) 10:17:22.85ID:TRAzYZli
>>106
型無しラムダ計算をExponential Monadの圏として解釈してlax monoidal functorを構成することで
型無しラムダ計算上のSK計算というのを圏論の言葉で解釈するという話を聞いた事がある
Applicative ((->) a)のpureがKコンビネータ <*>がSコンビネータに対応するのはそういうのと関係あるんじゃね
0112デフォルトの名無しさん2014/08/31(日) 11:40:29.10ID:vYUR5vqh
クラス定義するときに ((->) a) みたいに書くと入力側が a であるような手続きの型を生成する型コンストラクタになるじゃん?
出力側を固定するような型コンストラクタってどう書けばいいの?
0113デフォルトの名無しさん2014/08/31(日) 18:28:51.80ID:brh3fiZ2
ためしてないけど (a(->)) じゃだめなの?
0114デフォルトの名無しさん2014/08/31(日) 21:16:17.89ID:3CF3ekmc
反変ファンクタ(Data.Functor.Contravariant)のインスタンスじゃだめなの?
0115デフォルトの名無しさん2014/08/31(日) 21:26:48.38ID:iF/zAKDT
>>109
1. できる
2. できる
3. 知らん
4. 知らん
0116デフォルトの名無しさん2014/08/31(日) 21:28:35.80ID:iF/zAKDT
>>112
それはできない
0117デフォルトの名無しさん2014/09/01(月) 10:41:53.79ID:bzFJM8g3
どうして出来ないんだー
0118デフォルトの名無しさん2014/09/01(月) 18:11:02.97ID:5ZyeeTkH
値レベルだと(+a)は(\x -> x + a)の意味になるけど、
型レベルにはラムダがないのでこういうことはできない
((->)a)は単なる部分適用なので大丈夫
0119デフォルトの名無しさん2014/09/01(月) 18:46:31.84ID:2dhwQfvd
言語仕様上ないのはそう言うものだとしても、
バックにある理論と言うか圏論とか(よく分からんけど)で、>>112ができると具合が悪い理由と言うか考え方があるのだろうか
0120デフォルトの名無しさん2014/09/01(月) 20:14:36.60ID:E+8sD/+J
型シノニムでOp b a = a -> bを定義してかつ型シノニムに対しての部分適用(*)が可能ならば求めてる事と近い事ができるのだが
(*)が許されないのは関数的な同値判定っていう決定不能問題が発生して型チェッカがぶっ壊れるという背景がある
ただ(-> b)みたいなセクションすらできないというのはちょっとわからんね
0121デフォルトの名無しさん2014/09/01(月) 20:16:05.37ID:Q5PeE6kv
>>119
なんか前スレで同じ質問したかも。
型レベルFix?を使って解決できると教えてもらった
0122デフォルトの名無しさん2014/09/01(月) 21:51:22.50ID:MqIv2b+S
>>119
理論じゃないが、C言語の型の記法が批判されたという現実があるね
ゆえに型レベルでは無難な前置記法しか使わないのが主流
中置記法の型コンストラクタだけでも超マイナーなのにセクションなんてとんでもない
0123デフォルトの名無しさん2014/09/01(月) 23:04:03.22ID:5ZyeeTkH
型レベルのラムダを許すと型推論と型クラスで変なことが起こるはず
たとえば、
instance Functor (a,)
instance Functor (,a)
がある時、fmap negate (1,2)がどうなるべきか不明

逆に型推論も型クラスもないSystem Fなんかは型レべルのラムダを許す
0124デフォルトの名無しさん2014/09/01(月) 23:27:18.23ID:bzFJM8g3
てことは型推論方式が変わればワンチャンあるのか
0125デフォルトの名無しさん2014/09/02(火) 00:28:00.12ID:7zSeNpH5
>>123
> 逆に型推論も型クラスもないSystem Fなんかは型レべルのラムダを許す

GirardのSystem Fには型レベルのラムダ(型についてパラメタ化された型、つまり型構成子のユーザ定義能力)は存在しないよ。
項で型についてパラメタ化するのは多相型の項を構築する手段だからもちろん許してるけどね。
System Fが型レベルで許しているのは、多相型、つまり型変数を含む型式をその自由型変数について全称束縛する事。
∀t. τ(t) と λt. τ(t) とを混同しては駄目だよ。(ここで t は型変数で τ(t)は型変数 t が自由に出現し得る型式、例えば int × t とかね)
0126デフォルトの名無しさん2014/09/02(火) 01:06:34.48ID:f704CnQ2
>>124
そんなこともあろうかと仕様変更の嵐が過ぎるまで動的言語を使う戦略も用意してある
0127デフォルトの名無しさん2014/09/02(火) 06:25:38.52ID:UooLEgJe
>>125
ごめん、System Fωと言いたかった
0128デフォルトの名無しさん2014/09/02(火) 09:26:58.14ID:V4vsq9gT
newtypeしてしまえば区別がつくので大丈夫だけど面倒なんだよね。
うまくライブラリに閉じ込められればいいんだけど、ライブラリの
ユーザにまで不便さを強要せざるを得ないことがあって困る。
0129デフォルトの名無しさん2014/09/02(火) 19:31:12.41ID:/dSRrT7Z
すみません

だれか lisp の gensym みたいな関数かそれの代替物を教えてください
呼ばれるたびに確実に異なる数を返す関数です
0130デフォルトの名無しさん2014/09/02(火) 19:40:09.95ID:TYnEDLky
衝突しない変数名の生成か。
0131デフォルトの名無しさん2014/09/02(火) 20:16:15.05ID:iD57EJv5
その用途ならUniqueSupplyだな
GHCのAPIにも似たような名前のものがあって実際にGHC内部で使われてる
0132デフォルトの名無しさん2014/09/02(火) 20:23:13.54ID:fiFf3Pgj
87ですが、Emacsのテンプレートを使うことにしました。これで練習目的ではLANGUAGEプラグマとインポートを気にしないでよくなりました。
0133デフォルトの名無しさん2014/09/02(火) 21:32:32.48ID:UooLEgJe
>>129
「数」でなくてよければ
http://www.haskell.org/ghc/docs/latest/html/libraries/base-4.7.0.1/Data-Unique.html

具体的にIntとかが欲しい場合は、このモジュールの実装をコピペするのが一番楽っぽい?
hackageをさらっと見た限りではなさそう
0134デフォルトの名無しさん2014/09/02(火) 21:46:06.47ID:/dSRrT7Z
>>131 >>133
gen = mkSplitUniqSupply 'a'

newI :: IO UniqSupply -> IO Int
newI g = liftM (getKey.uniqFromSupply) g

で newI gen を呼ぶ度に再帰の最中でも異なる数が出るようになりました
IOがくっついてるのが面倒臭くなりましたが
0135デフォルトの名無しさん2014/09/02(火) 22:01:44.23ID:YKEiD9mA
オライリーの並列処理についての新刊ってどうなの?
薄い割にやたら高いんだが
0136デフォルトの名無しさん2014/09/02(火) 22:21:05.19ID:UooLEgJe
>>134
genはIOの中で一回だけ呼んで、後はsplitUniqueSupplyで増やしていくのが意図された使い方だと思う
0137デフォルトの名無しさん2014/09/02(火) 22:23:07.85ID:UooLEgJe
>>135
原書の内容読めるので自分で確かめるのがおすすめ
http://chimera.labs.oreilly.com/books/1230000000929/index.html
0138デフォルトの名無しさん2014/09/03(水) 00:03:13.44ID:laY2S8bO
なんだ全文公開されているのか
本買うまでもなかったわ
0139デフォルトの名無しさん2014/09/03(水) 00:09:40.10ID:PvOs3K6+
各ライブラリとそれぞれ原理を知ってる人には、良くまとまってるので確認とリファレンスにという感じかな。
0140デフォルトの名無しさん2014/09/03(水) 00:50:22.25ID:3yq080ul
データ構造を別のデータ構造に移したい。
汎用性の為に、コンストラクタの詳細に立ち入りたくは無いのだけど、どんな制約を想定すれば移せることが保証できるんだろ。

元: Folderble
先: Applicative かつ Monoid
なら、foldMapで移せるのは解るけど、mappendのコストが高そう。

元: Folderble
先: Folderble
でもいけるんだろうか

Traversableというのもあるの? なんだかよくわかんない。
教えて
0141デフォルトの名無しさん2014/09/03(水) 01:31:01.18ID:Kba/GcgZ
>>140 俺ならparsecでソースコード全部書きかえる
0142デフォルトの名無しさん2014/09/03(水) 02:06:48.51ID:a7zRlsp4
質問はちょっと分からないのでつまらない指摘だが
s/Folderble/Foldable/
0143デフォルトの名無しさん2014/09/03(水) 08:12:37.28ID:CPf5LDwT
移せる事の保証にどの程度の強さを求めるかによるわな
厳密に保証したかったらそれこそ両者のデータ構造同士がisomorphicであるみたいな強い制約が要求されるし
flattenみたいな形でよければ元がFoldableであればfoldでいいわけだし
0144デフォルトの名無しさん2014/09/04(木) 09:22:46.00ID:2k7T3ybm
みなさんありがとです

>>143
データ構造がisomorphic? というのは何でしょう。
ソートされたリストと、二分木はisomorphicでしょうか。

挿入・削除を何回かした後に、データ構造を舐めて結果を出力するというコードを書いています。
元はリストなのですが、削除が遅いので、
それを二分木に移し変えることにしました。
でも、開発を進める内に、挿入・削除があまりに多いので、それらの計算がO(1)なコンテナに変えようかと考え直しました。
そんな風に、計算量の需要でのらりくらりとコンテナを変えるので、アクセスを抽象化したいと思った次第です。

> 俺ならparsecでソースコード全部書きかえる
これが冗談なのか判断できないレベルなので、修行してきます
0145デフォルトの名無しさん2014/09/06(土) 09:06:48.94ID:7mLPsONf
isomorphicの意味を調べれば分かる。同型、つまり何かの関数を施せば1対1対応するから同じものと見なせる、
必要な時はいつでも両データ構造を行き来できる、みたいな意味でしょ
0146デフォルトの名無しさん2014/09/06(土) 10:22:32.78ID:k4mTz2ku
>>145
有り難うございます。wikipediaの説明が難しかったので、他の解説を探したのですが、下記のような説明を見つけました。

―――――――――――――
http://kinokkory.hatenablog.com/entry/20131203/p1#f-4c58ff88
同型というのは、ふたつのデータ型がある意味で同じものとしてみなせるということです。
AとBが同型であるとは、

・関数 f :: A -> B と g :: B -> A が存在する。
・g . f が A についての恒等関数であり、f . g が B についての恒等関数である。
―――――――――――――
ところで上記の説明の2つ目の条件と、「一対一対応する」は微妙に違うと思うのですが、どうでしょうか.
data Fruits = Apple | Banana | Strawberry
data Number = One | Two | Three
f :: Fruits -> Number
f Apple = One
f Banana = Two
f Strawberry = Three
g :: Number -> Fruits
g One = Banana
g Two = Strawberry
g Three = Apple

― f . g /= id
0147デフォルトの名無しさん2014/09/06(土) 11:20:41.51ID:LgF+fBKU
>>144
[a]やBTree aみたいなデータ構造を引数に取る関数を抽象データ型を引数に取るという手法でより一般化したいという事かね
それなら挿入・削除のような共通操作を持つ型クラスを作りってそれとFoldableを用いて実現できる
ただデータ構造によって突っ込める値に関する制約が違うというのがあるからその解決としてConstraintKindや型族みたいな言語拡張使う必要が出てきそうなのが厄介だな
操作にIOを伴うデータ型もサポートするために状態操作も抽象化したから余計面倒になったが以下のような感じで

{-# LANGUAGE ScopedTypeVariables, TypeFamilies, FlexibleContexts, ConstraintKinds #-}
import Control.Monad.State.Class
import Control.Monad.State
import qualified Data.List as L
import GHC.Exts
class RecordLike f where {
type ContentConstraint f :: * -> Constraint
; type Action f a :: * -> *
; add :: forall a. (ContentConstraint f a, MonadState (f a) (Action f a)) => a -> Action f a ()
; delete :: forall a. (ContentConstraint f a, MonadState (f a) (Action f a)) => a -> Action f a ()
}
instance RecordLike [] where {
type ContentConstraint [] = Eq
; type Action [] a = State [a]
; add a = modify $ (a:)
; delete a = modify $ L.delete a
}

これでf :: forall a. (Foldable f, RecordLike f, ContentConstraint f a) => [a] -> Action f a
みたいな形で定義すりゃその関数はリストだろうが二分木だろうがハッシュセットだろうが扱えるようになる
あとは長々と制約書くのが面倒なら型制約シノニムを使うとかで
0148デフォルトの名無しさん2014/09/06(土) 11:39:05.06ID:io9N8L9w
>>147
まさにそれが求めていたものです!
なるほど、ちゃんとやるとそのようになるのですね。
ありがとうございます。勉強になります。
0149デフォルトの名無しさん2014/09/06(土) 11:45:43.70ID:io9N8L9w
146 ですが、
f . g == id となるf, g が存在する
っていうのが条件だから、いいんですね。
失礼しました。
0150デフォルトの名無しさん2014/09/06(土) 18:48:33.19ID:5NBdbQM9
haskellのモジュールにD3.jsライクなものってありますか?
D3.jsライクというか結果的に同じことができるものです
ちなみにD3はデータ可視化のかなり有名なライブラリです
0151デフォルトの名無しさん2014/09/06(土) 20:37:15.28ID:k4mTz2ku
>>150
diagramsです!
http://projects.haskell.org/diagrams/gallery.html
0152デフォルトの名無しさん2014/09/07(日) 14:42:36.70ID:afaBmEoP
>>151
ありです!
0153デフォルトの名無しさん2014/09/07(日) 14:59:55.50ID:2nNDq8Bj
オプションで -package ghc しないとimportできないモジュールや、haskell.orgにあるプロジェクトのモジュールの、Haskell言語としての位置づけが分からない
0154デフォルトの名無しさん2014/09/08(月) 09:08:51.02ID:E4vtFdYZ
■海流出、さらに2兆ベクレル=ストロンチウムとセシウム−福島第1

 東京電力福島第1原発から放射性物質が海に流出している問題で、今年5月までの10カ月間に
第1原発の港湾内に出たストロンチウム90とセシウム137が計約2兆ベクレルに上る可能性が高い
ことが7日、東電の資料などで分かった。

 二つの放射性物質だけで、第1原発の事故前の放出管理目標値の10倍を超える。事故に伴う深刻な
海洋汚染が続いていることが浮き彫りとなった。

 第1原発では、汚染された地下水が海に流出しているほか、高濃度汚染水がたまった建屋のトレンチ
(ケーブルなどの地下管路)から直接港湾内に漏れている可能性も指摘されている。

 東電の資料によると、昨年8月から今年5月にかけ、港湾内の1〜4号機取水口北側で測定した
トロンチウム90とセシウム137の平均濃度を基に試算した1日当たりの流出量は、約48億ベクレルと
約20億ベクレル。10カ月間の総流出量はそれぞれ約1兆4600億ベクレルと約6100億ベクレルの計算に
なる。

 合わせると2兆ベクレルを超えるが、汚染水には他の放射性物質も含まれており、港湾内の汚染はより
深刻とみられる
0155デフォルトの名無しさん2014/09/09(火) 04:14:11.24ID:z58IhyOR
>>152
Emacs上のghciから :view hoge ってすると、
class Visualizable a where visualize :: a -> Diagram B R2
に適合した値であるhogeをEmacsのインライン画像表示機能を使って、その場所に挿入するようにしたら快適でした!
もうShow要らない
0156デフォルトの名無しさん2014/09/10(水) 13:15:47.59ID:X2zXXHXj
>>155 それ公開キボンヌ
0157デフォルトの名無しさん2014/09/10(水) 18:27:19.20ID:mId1v/4/
>>156
ごめん嘘ついてた。ghciコマンドにするのは無理だった。

http://lpaste.net/110832
を適当なところに置いて、あなたのhsファイルにそれをインポートし、
表示したい値hogeの型をVisualizableのインスタンスにして、
emacs上で実行しているghci上で

view hoge

するとemacsに図が挿入されます。

こんな風に
http://www.dotup.org/uploda/www.dotup.org5305910.png
0158デフォルトの名無しさん2014/09/11(木) 10:19:46.51ID:6SKhkqos
原発「制御できず」に外務省抗議 国連チーム報告書で
0159デフォルトの名無しさん2014/09/11(木) 10:46:01.90ID:DJaVGhTd
>>157
イイね、emacsclient 使うのか
0160デフォルトの名無しさん2014/09/13(土) 00:44:54.99ID:1YyhqkXY
モナディックな関数とかいうときの「モナディック」ってどういう意味ですか?
0161デフォルトの名無しさん2014/09/13(土) 05:31:28.37ID:xgqiej9k
>>160
Monadの、って意味。
モナディックな関数とは、モナドの値を返す関数のこと。
print::Show a => a -> IO ()
はモナディックな関数。IOがモナドだから。
0162デフォルトの名無しさん2014/09/13(土) 20:17:26.18ID:xgqiej9k
木以外も可視化してみたいと思ったんだけど、

そもそも無向グラフを扱ったことがないのに気がついた。
試しに
data Graph a = Graph (a,a -> [a])
と定義してみようとおもったけど、これだとFunctorにならない。
data Graph a = Graph [Edge a]
type Edge a = (a,a)
だと探索効率悪いし。
うーん
0163デフォルトの名無しさん2014/09/13(土) 23:00:45.30ID:1YyhqkXY
>>161
トン
0164デフォルトの名無しさん2014/09/15(月) 19:04:17.76ID:7sCZlnMT
昨日WindowsにHaskell Platformインスコしていろいろ弄ってるんだけど
.libライブラリを静的リンクしたいんだけどどうやるの?
ghcにuser32.lib指定してないのに foreign import ccall "PostQuitMessage" ... が動くし、
同じくkernel32.lib指定してないのにExitProcessが動くし、どうなってるの……
0165デフォルトの名無しさん2014/09/15(月) 19:45:48.83ID:BdYZ9X/p
状況わからん
0166デフォルトの名無しさん2014/09/15(月) 20:48:55.90ID:7sCZlnMT
あっ……
解決しました……
-l[ライブラリ名*拡張子なし*] を指定したらいけました
スレ汚し失礼しました…
0167デフォルトの名無しさん2014/09/15(月) 20:58:56.39ID:853zB9Gc
>>164
windows良く知らないけど、windows版GHCはMinGWベースなので
MinGWでリンクするのと同じ手順でできない?
http://www.mingw.org/wiki/Specify_the_libraries_for_the_linker_to_use

勝手にライブラリがリンクされる件は、たぶんそのプログラムが依存してるHaskellパッケージが
リンクを要求してる
たとえばbaseパッケージ(あらゆるHaskellプログラムが依存するパッケージ)は、
wsock32, user32, shell32を要求すると指定されてるっぽい
ghc-pkg describe baseとか打つとextra-librariesの項に出てくるはず
0168デフォルトの名無しさん2014/09/15(月) 21:48:17.23ID:7sCZlnMT
>>167
できました。拡張子を抜くというので躓きました。

ただウィンドウ作るだけのプログラムで1.8MBとかになってしまうのはそこらへんのライブラリをまとめて静的リンクしちゃってるからかな?と思ったけど、
それは>>10に書いてあるとおりなのかな?

stripしても1MBだし、これくらいならアセンブラで書いたほうが……と思ってしまう。
手続き型言語っぽいことだけしててもhaskellのありがたみは感じられないってことかな
0169デフォルトの名無しさん2014/09/15(月) 22:09:40.06ID:A6Qjo9u5
たかだか数メガの容量が問題になってくるってどういうシチュエーションなの?
0170デフォルトの名無しさん2014/09/15(月) 22:27:49.14ID:MGTym664
OS付属のDLLでなく、ダウンロードしてきたかオープンソースをビルドしたDLLだったら一種に梱包しても問題ないだろ?
ソフトを立派に配布した経験がないけど。
コード入手先かコード自体を入れとけば基本平気では。
0171デフォルトの名無しさん2014/09/15(月) 22:51:54.55ID:853zB9Gc
実行ファイルが大きいのはなんでだっけ、GHCが最適化の過程でコードを複製するからかな
ランタイムの大きさは大したことなかったはず。仮想マシンじゃないし(ネイティブコード生成)
いずれにしても実行ファイルの大きさが重要な用途ならHaskellというかGHCは向かないと思う
0172デフォルトの名無しさん2014/09/16(火) 00:59:36.67ID:OYajHQVK
>>169
趣味でゲーム開発だから問題ないといえば問題ないけどね
あせんぶらだと数KB程度で済むプログラムが1MB超えるのが納得行かなかった

>>170
DLLじゃなくて.libをリンクしたかったのです

>>171
うーむ
jhcというのを検討してみようかな
0173デフォルトの名無しさん2014/09/16(火) 14:02:51.79ID:VtA2dBig
http://programmer-gone-mad.blogspot.jp/2014/09/introducing-nu-game-engine-worlds-first.html
魔女狩りに気をつけてね
0174デフォルトの名無しさん2014/09/16(火) 16:21:30.20ID:vAQpoh0T
jhcの実用性はAgdaとどっこいってぐらいの玩具だから
0175デフォルトの名無しさん2014/09/16(火) 17:16:33.33ID:dW7uhwcE
コンパイラ作るしかない
0176デフォルトの名無しさん2014/09/16(火) 22:24:36.75ID:gfWckZld
f :: a -> [a] という任意の関数と、同じく a -> [a] 型で g x = [x] という関数に対して、
次の等式が成り立つことを証明したいです。

concat . map f . g = concat . map g . f = f

concat . map f . g = f は λx . (concat . map f . g x) として素直に簡約していけば
λx . f x となって f になるのですが、concat . map g . f = f の方のやり方が思いつきません。

具体的には、λx . (concat (map g (f x))) ここから先にどう進めばよいのか分かりません。

concat . map g . f = f はどう示せば良いでしょうか?
0177デフォルトの名無しさん2014/09/16(火) 22:54:33.82ID:mBp/kqIp
>>176
数学的に、つまりバードの「関数プログラミング入門」の中に出てくるみたいな
人間にとって readable な証明を望むのか、それとも Coq などのツールを使った
、可読性は低くても疑義のない証明を望むのか
0178デフォルトの名無しさん2014/09/17(水) 00:38:53.07ID:5Gf85B+R
concat (map g (f x)) = (f x) >>= return
あとは (f x) >>= return = f x の証明
リストがモナドであることの証明を探してコピペする
0179デフォルトの名無しさん2014/09/17(水) 08:54:04.70ID:BzLS2AoJ
Haskellではinstanceとclassの型の一致をチェックするだけで厳密な証明はしない
動的型付けよりマシ、というレトリックさえあれば証明などいらぬ
0180デフォルトの名無しさん2014/09/17(水) 10:10:39.81ID:nqEUaVP0
「関数プログラミング入門」でも結構最初の方に紹介されてたテクニックだが
両辺のf xをyと置いてより一般的な命題にしてyに関する帰納法という手もあるな
実質は式変形してモナド則の証明の形に持ってくるのと同じことやってるわけだけど
01811762014/09/17(水) 22:03:05.85ID:W44+hj+/
>>177
その本は読んだことがないので、どのような書き方がされているか分かりませんが、
人間にとって可読性が高い方が良いです。

>>178
モナドというものを学ぶ前段階のエクササイズらしいので、
この段階で return 関数などを使うのはどうかと初めは思いましたが、
どのような順や方法で学ぼうが最後に本質が理解できれば良いと思い直しました。
とりあえずこの方向(Monad クラスの関数を使う)で証明してみることにします。
ありがとうございます。

>>180
>>178 の方法で解けたら、あるいは詰まったら、帰納法でやってみます。
ありがとうございます。
0182デフォルトの名無しさん2014/09/22(月) 22:27:41.66ID:n9Fda3L9
東京電力は22日、福島第1原発で放射能汚染水を保管するタンクの建設中、鉄パイプが落下して協力企業の40代の男性作業員が重傷を負ったと発表した。
男性は背骨を骨折したが、命に別条はないという。東電が事故の原因を調べている。

東電によると、事故は20日午後0時20分ごろ、構内南側にあるタンク群の建設現場で発生。
協力企業の作業員7人がタンクの溶接などをしていたところ、半自動溶接機を上下に動かすウインチを移動させる際に、固定していた長さ1.5メートル、重さ約4キロの鉄パイプが13メートルの高さから落下し、男性の背中に当たった。
他の作業員にけがはなかった。
男性は福島県いわき市内の病院に運ばれ、重傷と診断されたが、22日から事務作業に復帰した。
0183デフォルトの名無しさん2014/09/23(火) 18:30:25.58ID:cEQ8bqom
9/20のNHK「サイエンスZERO」は、原発事故 謎の放射性微粒子を追え!」の放送予定でしたが、
「恐竜の細胞が見える!?」が再放送されました。NHKはその理由を公表しません。
0184デフォルトの名無しさん2014/09/23(火) 18:50:13.31ID:YLZJr4ao
スレ違いですがMojolicious使ってる人いますか?
0185デフォルトの名無しさん2014/09/24(水) 03:22:15.06ID:MWybmGkY
[´・_ Let'snote SX3 15万で売るぽよ
0186デフォルトの名無しさん2014/09/24(水) 20:35:29.76ID:Z2e1BcPM
>>185
ヤフオク
0187デフォルトの名無しさん2014/09/25(木) 03:00:53.63ID:6v2Qf6YW
中古ぽよ?五万なら買うぽよ
0188デフォルトの名無しさん2014/09/25(木) 09:36:06.02ID:h/qnH2IA
すごいHを生んだノーヨパヨヨンをプレミア価格でお届けする
ブルセラオンラインショップをイェソドで開発する案件の出番
0189デフォルトの名無しさん2014/09/25(木) 23:11:12.29ID:YRvO5dcq
[´・_ 焼肉おごるぽよ。詳しくはtwitterで
0190デフォルトの名無しさん2014/09/26(金) 17:20:13.08ID:KlQFkL2Z
Inversible-syntaxって廃れちゃったんやろか
ParserとPrettyPrinterを同時に定義出来るって聞いた時はワクテカしたのに
0191デフォルトの名無しさん2014/09/27(土) 08:33:56.37ID:gu4dQPXr
福島 「ALPS」再びトラブルで停止
0192デフォルトの名無しさん2014/09/28(日) 00:56:42.71ID:MGIHQutH
Haskellはマイルドぽよ?
0193デフォルトの名無しさん2014/09/28(日) 10:55:51.60ID:Si+4Y7up
リーグ戦優勝のマジック計算機作ってみたいです
優勝する為の全通りのシナリオを羅列する関数を書くために便利なライブラリはありますか?
0194デフォルトの名無しさん2014/09/28(日) 11:29:05.13ID:VcQBZWvO
ListTを使う典型例に見えるな
だとしたらmtlみたいなモナドトランスフォーマー系のライブラリが該当するんじゃないかね
0195デフォルトの名無しさん2014/09/28(日) 13:16:39.20ID:ySImTQuK
>>193
それを作る前提は、ショービジネスであるプロ野球が八百長ではない、ですよね
0196デフォルトの名無しさん2014/09/28(日) 15:08:30.18ID:5GX8p964
これがクソリプ…
0197デフォルトの名無しさん2014/09/28(日) 15:11:09.69ID:c6UlzIEI
八百だろうがガチだろうが、全通りのシナリオの組み合わせは同じじゃねーの?
0198デフォルトの名無しさん2014/09/28(日) 15:14:42.53ID:ySImTQuK
>>197
八百長なら、そもそもプログラムを作る必要がない
0199デフォルトの名無しさん2014/09/28(日) 15:47:44.92ID:FAkptdZZ
プログラミングのお題スレに持って行ったら誰か作ってくれそうw
0200デフォルトの名無しさん2014/09/28(日) 15:54:56.50ID:6J/u6gTL
Haskellによる並列・並行プログラミング
Simon Marlow, 山下 伸夫, 山本 和彦
価格: ¥ 3,888

ポチるか迷う
0201デフォルトの名無しさん2014/09/28(日) 17:32:24.50ID:hWxJQNQj
>>200
原著のオンライン版な無料で読める。

英語が苦手なら、迷ってるくらいならさっさと買って
購入金額分の情報を本から無理にでも搾り取った方がいい。

迷ってたって何も得られないんだし、本から得たものは無くならない。
ネットから情報を集める手間も省ける。
0202デフォルトの名無しさん2014/09/28(日) 18:22:15.65ID:rvEQwHhg
>>200のポイントはtanakahだけハブられてるところだと思うんだが
0203デフォルトの名無しさん2014/09/28(日) 21:10:37.17ID:ySImTQuK
>>200
かなり前に洋書の方を買った記憶があるから、情報は古いと思うけど、更新されてるんかな
0204デフォルトの名無しさん2014/09/29(月) 11:38:23.03ID:ZyON6JAa
>>201
はい、ポチりました
0205デフォルトの名無しさん2014/09/29(月) 11:49:55.52ID:07LODfKh
Haskellによる並列・並行プログラミング
Simon Marlow, 山下 伸夫, 山本 和彦  ┌(^o^)┐┐カサカサ・・・

Haskellによる並列・並行プログラミング
Simon Marlow, 山下 伸夫, 山本 和彦,┌(|||||)┐シュイン…!

Haskellによる並列・並行プログラミング
Simon Marlow, 山下 伸夫, 山本 和彦,(´・_・`)パッ

Haskellによる並列・並行プログラミング
Simon Marlow, 山下 伸夫, 山本 和彦,田中英行
0206デフォルトの名無しさん2014/09/29(月) 17:01:29.73ID:ZyON6JAa
このスレに偶に顔文字付きで末尾にぽよぽよ言う不審な人が出没するように見えるけど
普段の書き込みはぽよ無しで書いてるだけ?
0207デフォルトの名無しさん2014/09/29(月) 17:03:45.56ID:sAVGRibI
どっかのカスによるなりすましだろ
0208デフォルトの名無しさん2014/09/29(月) 17:08:58.20ID:WITlTI70
そいつがタナコフに粘着し始めてもう1年くらいかな?
Haskellに関係ないしネットウォッチ板とかでやって欲しいものだ
0209デフォルトの名無しさん2014/09/29(月) 17:20:05.88ID:KG/BegC7
Haskellは多くの問題がある。このトークでは見ることができます。
今年の奇妙なループ。 https://www.youtube.com/watch?v=SWTWkYbcWU0...
私にとって依存型は、基本的には不可欠である。
あなたは、私が知らない何かを、行うためにHaskellの型ファミリを使用できる可能性があります。
https://twitter.com/ikarienator/status/516494512240463872
0210デフォルトの名無しさん2014/09/29(月) 17:24:11.02ID:pVGLQbPI
>>202 すごハスはうちの学校でも評判いいよ。
0211デフォルトの名無しさん2014/09/29(月) 17:40:44.74ID:SijBaaHO
モナドの説明ぶん投げてたのに
翻訳者がHaskellでプログラミングの真髄が理解できた(キリッ
とか言ってた本と同じ翻訳者っぽいけど大丈夫なの?
0212デフォルトの名無しさん2014/09/29(月) 18:03:09.54ID:rGEfnDkw
>>211
まったく同じこと気になって買うの躊躇してる
0213デフォルトの名無しさん2014/09/29(月) 18:34:27.68ID:BrShvPG9
モナドの説明ぶん投げたって、ソースは?
0214デフォルトの名無しさん2014/09/29(月) 18:50:06.56ID:dpnIs8/X
プログラミングHaskellも関数プログラミング入門もモナドに関する説明が少ないのは原著由来からして割いてるページ少ないから仕方無いと思う
それ以外でモナドの説明をぶん投げた事いうのは勉強会だとかネットに公開されてるチュートリアルか何かかね
0215デフォルトの名無しさん2014/09/29(月) 19:49:49.55ID:SijBaaHO
>>214
原著でも割合が少なかったとしてもせめて補足とか別の本への誘導が欲しかった

「Hsakellを学ぶための最高の入門書(by訳者)」とか
翻訳者も原作者に連絡とってまで丁寧に翻訳したとか書いてあって期待してたんだけどなぁ
0216デフォルトの名無しさん2014/09/29(月) 19:56:21.14ID:sAVGRibI
具体的に、どの本とかに誘導があれば良かったと思ってるわけ?
0217デフォルトの名無しさん2014/09/29(月) 20:02:50.49ID:tmsJD90h
どの本のこと言ってるのか知らんけど
そういうのは説明ぶん投げたって言わねーよアホか
0218デフォルトの名無しさん2014/09/29(月) 20:31:27.61ID:dpnIs8/X
モナドに関しては訳者が書いたブログの記事やらスライドやら読んだ方がマシかもしれんな
そもそもどちらの本も古いものだし数多のモナドチュートリアルの失敗からフィードバックを得た新しい記事にはどうしても劣る
やるとしたら訳者注でそんな感じのおすすめのモナド入門の記事のurlを書くとかかねぇ
0219デフォルトの名無しさん2014/09/30(火) 08:19:08.44ID:HV0QL1Gq
モナドはポインタより難しい
いまだに解らん
0220デフォルトの名無しさん2014/09/30(火) 09:31:51.76ID:P3P6wdce
インスタンスを一個ずつ覚えよう
全部同時に教えれば効率いいんじゃねみたいなトップダウン馬鹿に惑わされるな
0221デフォルトの名無しさん2014/09/30(火) 19:30:17.56ID:uDYMgl/j
モナドは型クラスの定義とモナド則を見て分からなかったら諦めろ
0222デフォルトの名無しさん2014/09/30(火) 19:42:53.22ID:PoSTgdmY
f :: (a -> b) -> a -> a
f' :: (Functor m, Applicative m, Monad m) => (a -> m b) -> a -> m a

fを使ってf'を定義したい。
教えて
0223デフォルトの名無しさん2014/09/30(火) 20:35:27.12ID:P3P6wdce
モナドの定義を使って m a -> a を作れないことを証明するには
モナド及びその他全ての定義を使ってもそれを作れないインスタンスを一個示せばよい
0224デフォルトの名無しさん2014/09/30(火) 23:28:21.44ID:gNA9kBZ6
悪魔の証明という奴だな
否定の定義は意外と知られていない
0225デフォルトの名無しさん2014/10/01(水) 03:21:59.24ID:bEMbBwZk
222ですが、自己解決しました。
0226デフォルトの名無しさん2014/10/03(金) 20:49:23.58ID:jobz3T2e
>>224
>悪魔の証明
全称命題のことでしょ存在命題じゃなくて
そら全称命題だからすべての場合をつくさなくてはいけないので大変なのは当たり前だが「悪魔」がどうこういうほど複雑なわけではない‥

>否定の定義
矛盾の定義じゃなくてただの否定ですかね?そんなにむずかしいところがあったっけ?
0227デフォルトの名無しさん2014/10/03(金) 21:50:35.84ID:UwTYeZ/n
m a -> aの特殊化された形の型を持つunsafePerformIOの危険な例としてcoerce :: a -> bが書けてそれにより() -> Emptyが作れてしまうというのがある
これって実質(∃ f : m a -> a) → ⊥でカレーなんちゃらから¬∃ f : m a -> aってなるから
それをもって否定の証明とすることは言うことはできそう
0228デフォルトの名無しさん2014/10/03(金) 22:00:19.27ID:s89mrULR
リスト → _:リスト
WHNF
わかる


リスト→[_, _, _, _]
WHNF
は?

最初の構成子が現れるまで評価して、それ以上は評価しない
のが弱頭部正規形なんじゃないの?
0229デフォルトの名無しさん2014/10/04(土) 01:17:36.13ID:Rnt/h2V0
windowsで、LLVMオプションをつけてコンパイルする術はないのでしょうか?
いろいろやったけど、うまくいかないです。

OSは、windows 8.1 64bit版です。
0230デフォルトの名無しさん2014/10/04(土) 12:41:02.79ID:aTYfg4h1
>>229
このバグかな?
https://ghc.haskell.org/trac/ghc/ticket/7143

https://ghc.haskell.org/trac/ghc/ticket/7143#comment:8
にあるような方法で回避できる場合もあるようだ
02312292014/10/04(土) 14:11:52.89ID:UDMC2ivh
ClangOnWin Activity
http://sourceforge.net/p/clangonwin/activity/?page=0&;limit=100#542bd6bb27184666d3e6aa84

ここらへんからLLVMの様々なバージョンのうち、
2個ダウンロードして試しましたが、

GHCの最新版(HaskellPlatform-2014.2.0.0)との相性が悪いようで、
-fllvmオプションでのコンパイルに失敗したり、成功しても実行ファイルが動作しなかったり。

相性のよいバージョンをしらみつぶしで探すのも億劫です。別に問題があるかもしれない。
0232デフォルトの名無しさん2014/10/05(日) 11:37:46.53ID:bI/avFIb
Cabalって特定のパッケージは更新禁止かこのバージョンまでで止めておいてっていうオプションないの?

依存関係にある一部のパッケージで勝手に不具合ありの最新バージョンに上げようとして迷惑なんだけど
0233デフォルトの名無しさん2014/10/05(日) 12:05:19.02ID:gN1jpSkK
>>232
cabal install foo --constraint=bar==1.0
でいけるらしい
cabal install foo 'bar == 1.0'
とかでもいけたと思う
0234デフォルトの名無しさん2014/10/05(日) 12:32:43.38ID:bEYOdHBU
回線を
ぶった切れ
0235デフォルトの名無しさん2014/10/05(日) 13:03:41.56ID:6ABX7oxU
よくわからんがシェルショックの次はgcc vs. clangショックが来るのかな
0236 ◆QZaw55cn4c 2014/10/05(日) 13:39:50.57ID:FZuSwsnO
>>235
もうすでに来ている、FreeBSD を筆頭に奴らはみな gcc を見限った、minix でさえも gcc を突き放した、copyleft 思想は乙女のピンチ
0237デフォルトの名無しさん2014/10/05(日) 13:54:24.49ID:Vex2igBW
>>232
Stackage使うのは?
http://www.stackage.org/
0238デフォルトの名無しさん2014/10/07(火) 01:45:39.34ID:4nlgcGJf
http://wiki.haskell.jp/ が閉鎖だってさ。
0239デフォルトの名無しさん2014/10/07(火) 11:57:13.32ID:NUXh/T9C
Haskellランタイムシステムって取り敢えずOSにメモリくれくれして
断られたら初めて『しょうがねえな、自前でなんとかすっか』ってGCするの?
0240デフォルトの名無しさん2014/10/07(火) 17:39:38.79ID:Rf3+5HS2
>>239
いや、それをやったら1G/sくらいの勢いでシステムのメモリ全部食うことになる
GC第0世代の領域の大きさは固定だし、第1世代は可変だけど増えるのはゆっくりになってる
https://www.haskell.org/ghc/docs/7.6.3/html/users_guide/runtime-control.html
ここの-Aとか-Fを参照
0241デフォルトの名無しさん2014/10/08(水) 18:12:25.80ID:XoeCEfVj
Map k v を k :-> v みたいにして関数ライクに使いたい。
そういうライブラリある?
02422412014/10/08(水) 19:58:32.59ID:iTXSQwmF
見当たらないので作ってみましたが...

http://lpaste.net/112304
0243デフォルトの名無しさん2014/10/09(木) 01:28:13.47ID:yI/Jzb2v
cabal haddock で既にインストール済みのパッケージのドキュメントを追加するにはどうしますか?
0244デフォルトの名無しさん2014/10/09(木) 02:52:19.47ID:yI/Jzb2v
>>233
ありがとうございます。巧く行きました

>>237
駄目でした。サンキューエニウェイ
0245デフォルトの名無しさん2014/10/10(金) 01:17:38.81ID:Y1+8A3I8
依存地獄を避けるにはcabalで
一個ずつじゃなくて欲しいパッケージ一気に並べた方がバージョンの調停してくれるんだね
インストール時のコマンドのログ録った方がいいな
0246デフォルトの名無しさん2014/10/10(金) 08:13:53.70ID:nsfdMwJ/
まるでPerl5をPerl6に更新するようなことをやってるんだろうな
手動なら何もしないものを自動にしても無益どころか有害だ
0247デフォルトの名無しさん2014/10/10(金) 17:50:39.67ID:s24SpmmQ
import Data.Functor.Contravariant

newtype Op2 b a = Op2 (a -> a -> b)
instance Contravariant (Op2 b) where
contramap f (Op2 x) = Op2 (x `on` f)

とすると、
Op2 (==) >$$< (`mod` 3)
のように書けて面白い。でも
(==) >$$< (`mod` 3)
とできるともっと嬉しいのだけど、なんとかならないかなぁ。
0248デフォルトの名無しさん2014/10/11(土) 09:43:27.42ID:eNl3sMbS
型族とか使ってContravariantを定義したら(==)の型 Eq a => a -> a -> Boolから暗黙的に同値関係の反変関手を適用とかできるんかね
0249デフォルトの名無しさん2014/10/11(土) 19:35:28.06ID:RVCvQvPc
contrareturnってないの?

fmap = contramap . contramap
return = contrareturn . contrareturn
join = contramap return
0250デフォルトの名無しさん2014/10/12(日) 02:36:59.67ID:+5P3aFyP
もんじゅ監視カメラ3分の1故障 1年半放置も、保安規定違反疑い

 大量の機器点検漏れから事実上の運転禁止命令が出ている日本原子力研究
開発機構の高速増殖炉もんじゅ(福井県)で、1995年のナトリウム漏えい事故を
きっかけに原子炉補助建物に設置された2次系冷却材の監視カメラ計180基のうち、
約3分の1が壊れていることが11日、関係者の話で分かった。

 原子力規制庁が9月に実施した保安検査で判明。壊れたまま1年半以上放置
されていたものもあり、保安規定違反の疑いが持たれている。低温停止中のため
実害はないとみられるが、機構の安全管理体制が問われ、命令期間が長期化
する可能性が出てきた。
0251デフォルトの名無しさん2014/10/13(月) 15:43:57.81ID:ndeR0BEl
hoge :: Applicative f => (f a -> f b) -> f (a -> b)
が欲しいのですが、どうやっても作れません。誰か教えて
0252デフォルトの名無しさん2014/10/14(火) 00:49:51.09ID:gqGRU/mX
hoge concat :: [[a] -> a]

hogeのソースコードの中にデータコンストラクタはない
concatは呼び出されない
hoge _ = ⊥
0253デフォルトの名無しさん2014/10/14(火) 03:46:26.83ID:MNjmhKjV
>>252
なるほど、わかりました!
0254デフォルトの名無しさん2014/10/17(金) 14:20:14.02ID:TgkQJjfY
[´・_ みなさんのご不要になったiPad miniを、いまならなんと、無料で!お引きしておりますぽよ!この機会にぜひ!ご連絡お待ちしておりますぽよ
0255はちみつ餃子 ◆8X2XSCHEME 2014/10/17(金) 14:47:06.70ID:5fX6k6qM
そうか。
0256デフォルトの名無しさん2014/10/17(金) 21:23:42.16ID:8/jWEK5q
がっかい。
     ノ
0257デフォルトの名無しさん2014/10/18(土) 12:24:57.09ID:TkQE1CRS
>>254
なりすまし死ね
0258デフォルトの名無しさん2014/10/18(土) 12:30:04.02ID:HQiMaXDH
これで成りすませてるのか
0259デフォルトの名無しさん2014/10/18(土) 12:43:32.41ID:Ae8YNsjN
何に成りすましたんだ
0260デフォルトの名無しさん2014/10/18(土) 23:11:48.84ID:O3iieulX
ところでここにいる皆さんって普段どんな仕事してるんですか?
この言語あんまり普通のアプリの開発には向いてなさそうだし、使い手はCSとか数学の教養がある人が多いようだし
結構コアな仕事をやっているんでしょうか。
0261デフォルトの名無しさん2014/10/18(土) 23:18:10.67ID:gQK7gpe0
ビルメンやってます
0262デフォルトの名無しさん2014/10/19(日) 10:11:24.38ID:xZSh/37j
ちょっと正義の味方をしてます
0263デフォルトの名無しさん2014/10/19(日) 10:12:32.69ID:Z+cllJIv
普通にプログラマーだがHaskellの仕事は見たことない
0264デフォルトの名無しさん2014/10/19(日) 10:40:53.92ID:YpIvvbfN
Haskellは静的型付けの味方
CSとか教養とかいうピンボケ野郎の敵
0265デフォルトの名無しさん2014/10/19(日) 14:38:47.63ID:uVcP9PEL
高速度取引(HFT)
0266デフォルトの名無しさん2014/10/20(月) 06:15:09.89ID:NVo8q+G7
普通のアプリの開発に向いてると思うからこのスレにいる
0267デフォルトの名無しさん2014/10/20(月) 14:55:16.84ID:2FIBpHJ9
セシウム濃度が最高値=地下水で26万ベクレル超−福島第1

 東京電力は18日までに、福島第1原発2号機東側の港湾近くに設置した観測用井戸で
16日に採取した地下水から、1リットル当たり26万4000ベクレルのセシウムが
検出されたと発表した。地下水のセシウム濃度で過去最高値。
0268デフォルトの名無しさん2014/10/20(月) 20:17:41.09ID:M2DZDJ5t
普通のアプリの開発には、C#/Javaの方が向いてるでしょ。ライブラリの質と量が全然違う。
この言語が向いているのは、数学的にモデリングしやすい対象についてのプログラムを組む時じゃない?金融工学とか。
0269デフォルトの名無しさん2014/10/20(月) 20:32:18.48ID:ArnYxvsK
向いてる向いてないの話ならライブラリの質と量はとりあえず置いておくだろ普通
0270デフォルトの名無しさん2014/10/20(月) 20:44:36.43ID:dL8L/7RF
パズル解くのに向いてる
0271デフォルトの名無しさん2014/10/20(月) 20:52:26.43ID:zqeuiJ+g
数学とか言ってる人、Haskell使ってなさそう
0272デフォルトの名無しさん2014/10/20(月) 21:11:08.39ID:1JDYy/6U
頭の体操に使ってる
0273デフォルトの名無しさん2014/10/20(月) 22:02:29.72ID:NVo8q+G7
>普通のアプリの開発には、C#/Javaの方が向いてるでしょ。ライブラリの質と量が全然違う。
そう考える人はたくさんいる
>この言語が向いているのは、数学的にモデリングしやすい対象についてのプログラムを組む時じゃない?金融工学とか。
いいえ
0274デフォルトの名無しさん2014/10/20(月) 22:03:33.56ID:sYr1LscH
単純に、学習コストが高くて十分に扱える人材が少ないから実務に向かないのでは?
0275デフォルトの名無しさん2014/10/20(月) 22:09:30.93ID:NVo8q+G7
web上の反応を見る限りでは、学習コストが高いというより単に人気がないように見える
0276デフォルトの名無しさん2014/10/20(月) 22:09:59.68ID:2FIBpHJ9
4号機使用済み燃料搬出終了へ
2014年10月20日

 福島第1原発4号機の使用済み核燃料プールからの燃料取り出し作業で、
東京電力は20日、使用済み燃料1331体のうち1320体の移送を終了したと発表した。
次回作業で破損燃料3体を含む使用済み燃料すべての移送作業が終わり、
プールに残るのはリスクの低い未使用燃料だけとなる。

 4号機プールには原発事故の発生前から、「く」の字に曲がった燃料が1体、
過去に放射性物質漏えいが検知された燃料が2体入っていた。次回の作業では、
変形した燃料が入るように収納スペースを一部広げた輸送容器で、
残る使用済み燃料11体を一遍に別棟の共用プールに運ぶ。11月末までに移送を終える予定。
0277デフォルトの名無しさん2014/10/20(月) 22:26:39.90ID:HYhBDv5c
Haskellは静的型付けに向いていると言えば楽になれるのに
型の話題を避けてもスクリプト言語が得をするだけだぞ
C#/Javaは毒にも薬にもならん
0278デフォルトの名無しさん2014/10/20(月) 23:13:50.18ID:Nw2FKi3B
Haskell は、実務では、repl が重宝してる
0279デフォルトの名無しさん2014/10/20(月) 23:46:57.66ID:zqeuiJ+g
静的型付けに向いているって何?
静的型付けされている、とはどう違うのかな
0280デフォルトの名無しさん2014/10/21(火) 00:19:06.92ID:59ik5Gq1
Cは静的型付けされているがCと同じでは満足できない人がいて違うのを作ろうとしている
言うまでもない現実
0281デフォルトの名無しさん2014/10/21(火) 05:32:50.87ID:lJ5j5/+X
>>278
ghci?あれ値を表示するルールが分かりにくくないですか。
あとλ式くらいShowのインスタンスじゃありません、とかつべこべ言わずに黙って表示しろ!といつも思う…。
0282デフォルトの名無しさん2014/10/21(火) 09:26:40.20ID:MOstEzxE
Haskellより優れた言語教えて
学習コスト高くて人が寄りつかなくて強力で実用的なの
自分で書いたコード三ヶ月後に眺めて絶望しない奴
0283デフォルトの名無しさん2014/10/21(火) 09:50:27.14ID:cD3cGaQf
>>282
ATS が最強。
0284デフォルトの名無しさん2014/10/21(火) 17:54:38.93ID:ATP5nWI5
経産省職員を強姦未遂容疑で逮捕 千葉県警佐倉署

 千葉県警佐倉署は21日、強姦未遂の疑いで川崎市麻生区、経済産業省資源エネルギー庁職員仲上京介
容疑者(24)を逮捕した。

 逮捕容疑は2010年9月27日午後10時ごろ、千葉県八街市内の路上で、当時高校生だった女性(20)に
後ろから声をかけて人けがない場所に連れて行き、乱暴しようとした疑い。

 佐倉署によると、仲上容疑者は当時大学生で八街市内に住んでいた。「脅して乱暴しようとしたことは間違い
ない」と容疑を認めている。女性との面識はなかった。
0285デフォルトの名無しさん2014/10/21(火) 23:32:44.42ID:MzqOl5t0
>>283
デスヨネー
0286デフォルトの名無しさん2014/10/23(木) 15:03:49.80ID:I5sCFcB1
>>283
寄り付かな過ぎてWindows版コンパイラすら無いじゃん
自分でmakeしろってか
ここにはGHC自前でmakeしてる人居るの?
0287デフォルトの名無しさん2014/10/23(木) 23:11:23.56ID:NLZm4zf8
>>286
cygwinでコンパイル済のATSインストーラがmsiであるとはかどる感じです?
0288デフォルトの名無しさん2014/10/24(金) 00:31:48.45ID:aO1+iu9V
コンパイラは自分自身をコンパイルしようとするから面倒
中間言語のインタプリタで十分
インタプリタだろうがコンパイラだろうがどうせライブラリの大半がC言語だし
0289デフォルトの名無しさん2014/10/24(金) 10:11:03.41ID:igKQL6G8
>>287
いやもうスマホのLinux環境でmakeしたのでいいです
Windowsは諦めてスマホでプログラミングします
インラインC言語が可能な関数型言語すか
Haskellの現実版かな?
0290デフォルトの名無しさん2014/10/24(金) 11:52:00.17ID:5Sih5aht
>>289
次期Debian安定版にはパッケージが入るんじゃなかったっけ?
https://packages.debian.org/jessie/ats2-lang
0291デフォルトの名無しさん2014/10/24(金) 11:54:09.82ID:5Sih5aht
>>290
Ubuntuもだけどね
http://packages.ubuntu.com/utopic/devel/ats2-lang
0292デフォルトの名無しさん2014/10/24(金) 18:27:15.54ID:/zvIgrNX
>>288
ん?C言語なんて直接書いたりしないよん
0293デフォルトの名無しさん2014/10/25(土) 21:34:06.25ID:skuEpUNr
テスト周りを調べてみました。こんな感じであってますか

HUnit 単体テスト(引数と結果の対応とかをチェック)
QuickCheck. ランダムテスト(ランダムに値を生成してルールに沿っているかをチェック)

doctest コメントにテストコードを書ける
hspec 別のファイルにまとめてテストコードを書ける
test-framework テストコードをグループ分けしたり、見やすくしたりできる


形式的証明とかは無いの? haskell-src-extsでパースして、変形して恒真であることをチェックできる、みたいな
0294デフォルトの名無しさん2014/10/26(日) 21:40:21.56ID:WKfuD2eE
(a, b) -> c に対しては
a -> (b -> c) がいるじゃん?

a -> (b, c) は孤独なの?
0295デフォルトの名無しさん2014/10/26(日) 21:46:53.03ID:u4tbdCa8
FunctionalDependencies オプションについて質問です。

下記のプログラムで class Cook に型依存性(と言うのかな?) a -> b を指定する必要性が分かりません。

------------------------------
data Nasu = Nasu Int

class Cook a b where
 cook :: a -> b

instance Cook Nasu Nasu where
 cook (Nasu n) = Nasu (n+1)

main :: IO ()
main = do
 let a = Nasu 1
 let b = cook (cook a) :: Nasu
 return ()
------------------------------

cook (cook a) :: Nasu を cook ((cook a) :: Nasu) :: Nasu に変えればオプション不要でコンパイルが通ります。

ですが、このプログラムなら (cook x) :: Nasu の x は Nasu 以外にありえないので、
現状のままでも cook (cook a) :: Nasu の内側の cook a は Nasu だと推論されても良さそうなんですが・・・

デフォルトでは、cook ::a -> b の a から b も、逆に b から a も推論しないのでしょうか?
0296デフォルトの名無しさん2014/10/26(日) 22:14:29.56ID:vFcg41hF
>>294
上の二人ほど親密ではないが ( (a->b), (a->c) ) という親友はいるな
0297デフォルトの名無しさん2014/10/27(月) 06:54:23.07ID:6YT6iDls
ナス×ナスはCookのインスタンスであるが、cook ナスがどんな型になるか確定していないので、?×ナスはCookのインスタンスとして認められない

と初心者が嘯くテスト
0298デフォルトの名無しさん2014/10/27(月) 07:12:16.97ID:6YT6iDls
いや違うな

今、Cookはナス×ナスにしかインスタンスを認めていないので
コンパイラはナス×ナス以外の可能性が少しでもあるものにcookを使わせるわけにはいかない
今、aはナスを取るだけで返値の型についてなんら言及していない
従ってナス→?であり、ナス×?をCookの仲間として認めることはできないのでcookを使わせることもしない
コンパイラは考える。そもそもcookってなんだ? Cookの条件となる関数のことかも知れないがその保証もないではないか
もしそのつもりで書いてるなら前もってナス×ナスである保証をくれ。それならcookを使わせてやる


と初心者が嘯いて世を惑わせるテスト
0299デフォルトの名無しさん2014/10/27(月) 07:14:29.67ID:6YT6iDls
いや、違うな

今、cook a はナスを取るだけで返値の型についてなんら言及していない
従ってナス→?であり〜か
0300デフォルトの名無しさん2014/10/27(月) 07:15:21.83ID:pBeepT/B
0301デフォルトの名無しさん2014/10/27(月) 19:28:37.24ID:Ca9vxtbi
>>295
一般に、「あるインスタンスが存在しない」ことに頼った型推論はしないことになってる
一般論としてはクラスのインスタンスはどこでも宣言できるから、今見える範囲に
インスタンスがないからといって、プログラムのどこにもないとは言い切れない

そのコードの場合はMainしかないプログラムなので全貌が見えてるけど、
そこは特別扱いしないで、あくまでCookのインスタンスが他にある可能性を想定する
03022952014/10/27(月) 20:27:57.25ID:xhap4Kxq
>>298 を要約すると >>301 なんですね。
とても分かりやすい説明で納得できました。

お二人とも、ありがとうございました。
0303デフォルトの名無しさん2014/10/27(月) 21:59:53.36ID:/wM/F8s2
>>301
流石上級者様は的確に本質を突くなぁ
0304デフォルトの名無しさん2014/10/28(火) 09:00:12.01ID:X2R2+570
>>243

.cabal/config ファイルを修正して
documentation: True

にしたのち、

cabal install world --force-reinstalls --reinstall

で、インストールされている全てのパッケージがドキュメント付きで再インストールされます。
0305デフォルトの名無しさん2014/10/28(火) 21:07:37.54ID:X2R2+570
(?) :: Bool -> a -> a -> a

(?) :: (a -> Bool) -> (a -> b) -> (a -> b) -> (a -> b)

のようにinstanceを作って使えるようにしたいんだけど、どんなclassを作ればいいんでしょうか
03063052014/10/28(火) 21:27:22.93ID:X2R2+570
すいません、自己解決しました。

class Conditional q a where
type ConditionalExec q a
(?) :: q -> ConditionalExec q a -> ConditionalExec q a -> ConditionalExec q a

-- >> (True ?) 1 2
-- 1
instance Conditional Bool a where
type ConditionalExec Bool a = a
(?) b x y = if b then x else y

-- >> (even ?) (+ 1) (subtract 1) $ 2
-- 3
instance Conditional (a -> Bool) b where
type ConditionalExec (a -> Bool) b = a -> b
(?) = liftA3 (?)

-- >> (((==) ?) (+) (-)) 2 1
-- 1
instance Conditional (a -> b -> Bool) c where
type ConditionalExec (a -> b -> Bool) c = a -> b -> c
(?) = liftA3 (?)

まあこういうものが役に立つかは分かりませんが、
前々スレで質問に答えてくれた方が、"多引数関数のポイントフリー化は上手くいかない"って仰ってたので、ずっと気になっていました。
0307デフォルトの名無しさん2014/10/28(火) 23:30:10.66ID:m/ikHWHj
タプルに対してmapの使用を禁止したのが悪い
map ($ 2) (even, (+ 1), subtract 1)
map (`uncurry` (2,1)) ((==), (+), (-))
0308デフォルトの名無しさん2014/10/29(水) 13:49:03.62ID:APzrLMN7
う〜ん、やっぱりもうWindows2000ではprocessパッケージが正しくシンボルリンクできてないな
processが駄目ならWin32も駄目ってわけで。
遂にXPに移行の潮時か
中古のノーパソ1万くらいで探すか
0309デフォルトの名無しさん2014/10/29(水) 16:39:46.83ID:TgghxHIi
ここはお前の日記帳だよ
0310デフォルトの名無しさん2014/10/29(水) 21:07:49.16ID:92SS7Xbr
便所の落書きとチラシの裏って、どう違うの?
0311デフォルトの名無しさん2014/10/29(水) 21:48:47.81ID:MeZiugk5
>>310
便所で暮らしていて折込広告入りの新聞もとっている人にとっては同じです。
0312デフォルトの名無しさん2014/10/30(木) 00:37:54.38ID:BnK4LurP
Emacsユーザーいる?

お前らREPLするのに Inf-haskell-mode とか使ってるんだろうけど、それオワコンだから。
代わりに interactive-haskell-mode 使え。捗るぞ。
メリット:
・編集中のコードでコンパイルがコケても、REPL側がクリアされない。
・補完が効く。
0313デフォルトの名無しさん2014/10/30(木) 00:40:00.14ID:i7GNsy6Q
emacs+コマンドプロンプトなのは俺だけか…
0314デフォルトの名無しさん2014/10/30(木) 00:42:36.29ID:qxLbdY/2
Vim派だけどプラグインは流行が激しすぎて追うのめんどい
まともなIDEはよ
0315デフォルトの名無しさん2014/10/30(木) 01:09:20.95ID:YQsuxWlr
義ってどうなったの?
0316デフォルトの名無しさん2014/10/30(木) 02:01:04.82ID:PIIL60DQ
関数型言語終了か

【翻訳】USトップ大学でも関数型プログラミングが余り教えられていない現実
http://postd.cc/who-teaches-functional-programming/
0317デフォルトの名無しさん2014/10/30(木) 07:15:16.47ID:Ka8QLUCa
>>314
IDEを求めるVimユーザ??

Vim使い出すとそこらのテキストエディタやらIDEやらはバカバカしくて使えなくなるもんだと思ってました...

仮にまともなIDEが作られるとするなら、どんな機能が欲しい? グラフィカルCabal?
0318デフォルトの名無しさん2014/10/30(木) 07:17:02.14ID:Yy7uGwo0
Vimを何だと思ってるんだw
0319デフォルトの名無しさん2014/10/30(木) 07:24:14.93ID:8Ui8dVCD
所詮エディタはエディタ
アマグラマが暇つぶしに作った開発支援マクロごときじゃ
プロフェッショナル集団が(退屈なところまで)きっちり作りこんだ機能満載のIDEには遠く及ばない
0320デフォルトの名無しさん2014/10/30(木) 07:44:22.06ID:Ka8QLUCa
> 退屈なところまで
コレなんだよな
0321デフォルトの名無しさん2014/10/30(木) 07:50:27.34ID:Ka8QLUCa
個人的には、
In the second argument of ~
In the first argument of ~
In the second argument of ~
とかいうのを何とかしてほしい。気の利いた矢印とかそういう感じので…

あとは、ドラッグ&ドロップでArrowの回路図が組めるとかどう?
少なくともこれよりはいいでしょ
http://scrambledeggsontoast.github.io/2014/09/28/needle-announce/
0322デフォルトの名無しさん2014/10/30(木) 08:23:40.93ID:02BD2rSI
interactive-haskell-modeはいちいち.cabal作らないといけないのがめんどい
0323デフォルトの名無しさん2014/10/30(木) 08:37:47.81ID:Xnlz9Lrq
>>317
言語によるなあ
jsみたいな動的寄りならエディタでもまあいいけど
静的に寄れば寄る程IDEとの格差が開くイメージ
その意味ではHaskellってすごいIDE出来そうだけどね
0324デフォルトの名無しさん2014/10/30(木) 10:06:54.89ID:u9ATJLhh
lamduの動画見る限り確かにすごいものはできそう
言語拡張に対応できるのか謎だけど
0325デフォルトの名無しさん2014/10/30(木) 11:13:55.19ID:qny8Mq3O
格差はノイズ
抽象化は格差を捨象する
0326デフォルトの名無しさん2014/10/30(木) 12:38:10.20ID:lquEeW13
>>325
どういう意味?
0327デフォルトの名無しさん2014/10/30(木) 12:58:20.22ID:qny8Mq3O
抽象化すればするほど格差がなくなるイメージ
0328デフォルトの名無しさん2014/10/30(木) 13:23:40.65ID:dpPD7LuJ
>>327
抽象化を進めると、テキストエディタでも十分になる、ってこと?

静的な言語の特徴を生かしたIDEの機能といえば、うーん、例えば…
カーソルのある位置に置くことのできる値の型でフィルタして補完する、とかが思いつく。
割と便利な気がするけど、
十分に抽象化するとそういうのも要らなくなるの?
0329デフォルトの名無しさん2014/10/30(木) 18:33:17.80ID:qny8Mq3O
そういうのが要る人と要らない人の間に壁を作っておいて
全員こちら側に移住させれば便利だというのは画一化になる
抽象化は画一化とは違い壁自体を無くすので人を動かす必要がない
0330デフォルトの名無しさん2014/10/30(木) 22:22:57.61ID:Ka8QLUCa
>>329
興味深いけど、どこか曖昧に聞こえます。

壁は何を意味しますか? 抽象化bヘどのように壁bウくすの?
0331デフォルトの名無しさん2014/10/30(木) 23:04:07.96ID:Ka8QLUCa
11月!
http://honto.jp/netstore/pd-book_26433609.html
0332デフォルトの名無しさん2014/10/30(木) 23:15:19.78ID:i7GNsy6Q
>>316
そもそも、プログラミング言語そのものは、もはや教わるモノじゃなくなってる
0333デフォルトの名無しさん2014/10/30(木) 23:27:08.34ID:H02odoB1
教えるもの?
0334デフォルトの名無しさん2014/10/31(金) 01:42:47.72ID:kWZ3STh8
ライブラリが何もないのにチューリング完全とかいう言語は教えないってことだろ
最初からライブラリが大量にある言語を教える
ライブラリが多いなら言語そのものを教える暇はないと
0335デフォルトの名無しさん2014/10/31(金) 03:53:55.69ID:It18IbqY
2011年に起きた東日本大震災の救援活動に従事した米海軍の兵士らが、
東京電力の福島第一原子力発電所の事故で被ばくしたとして
損害賠償などを求めている問題で、米カリフォルニア州の連邦地裁は
同州での訴訟を認める判断を下した。


東電は司法権の問題を理由に米国での集団訴訟ではなく日本での審理を求めていたが、
サンディエゴ連邦地裁のジャニス・L・サマルティーノ判事はこれを退けた。
.

同判事は28日の判断について、「日本での審理は適切な選択肢ではあるが、
公民双方の利益のバランスを勘案したところ、
米国の裁判所で進行する方が都合が良いであろう」と文書で説明した。
0336デフォルトの名無しさん2014/10/31(金) 06:46:07.96ID:qzXnBU4c
Haskellは割とライブラリが充実してる方なんだがなぁ、量も質も
0337デフォルトの名無しさん2014/10/31(金) 07:47:46.69ID:kWZ3STh8
教える暇がないのにこれ以上充実させてどうする
0338デフォルトの名無しさん2014/10/31(金) 12:19:48.20ID:6o+/Odkz
>>331
並列・並行プログラミング買って日が浅いのにまた俺の財布を痛めつける気か
0339デフォルトの名無しさん2014/10/31(金) 12:44:29.34ID:eFG4AR46
原書はこれかな。
http://www.amazon.com/Pearls-Functional-Algorithm-Design-Richard/dp/0521513383/

November 1, 2010
0340デフォルトの名無しさん2014/10/31(金) 13:07:37.59ID:6o+/Odkz
>>339
それ数年前にここの過去スレでも紹介されてましたよね
遂に翻訳されたんだなあ
0341デフォルトの名無しさん2014/11/01(土) 07:48:35.79ID:k1QlR24b
暇すぎるので、俺俺.Utilsを晒す。

まず、上で定義した(?)。Haskellにはif/then/elseなんていらなかったんや。
>> (True ?) 1 2
>> (even ?) (+ 1) (subtract 1) $ 2
>> (((==) ?) (+) (-)) 2 1

Arrowサポート。(>-),(-<),double。
>> ((+) -<).double (* 2).((+ 1) *** (subtract 1)).(>-) $ 3
12

by演算子。ポイントフリー厨の俺御用達。on並によく使う。
by :: (a -> b) -> (x -> y -> a) -> (x -> y -> b)
たとえば、(/=) = not `by` (==)

unfoldrMより簡単。
untilM :: (Applicative m,Monad m) => (a -> Bool) -> (a -> m a) -> a -> m a

IO計算測る。
bench :: IO () -> IO NominalDiffTime
0342デフォルトの名無しさん2014/11/01(土) 14:16:38.90ID:Yiae8Qoy
11月!
http://gihyo.jp/book/2014/978-4-7741-6926-2
0343デフォルトの名無しさん2014/11/01(土) 18:20:45.39ID:W3H01FT0
>>342
並列・並行プログラミング買って日が浅く、
>>331も買わねばならんのにまた俺の財布を痛めつける気か
0344デフォルトの名無しさん2014/11/01(土) 19:03:17.94ID:CfUk7pp7
>>343
もう関数プログラミング三昧で酒池肉林の世界だなw
0345デフォルトの名無しさん2014/11/05(水) 09:16:47.80ID:+orMvxZh
Lazy なデータ構造と、Strict なデータ構造の違いが分からない。

Lazy は無限の構造を作れるが、メモリを食う。
Strict は有限の構造しか作れない代わりに、メモリを食わず、速い。

"いつ"、Lazyを使うべきかが、分からないんだなあ。
0346デフォルトの名無しさん2014/11/05(水) 10:36:54.50ID:O0NTsTrW
普通にオブジェクト指向で作ると遅延評価はgetterで作れるから
getterとpublic変数の違いを考えればよい
「getterはメモリを食う」「public変数は速い」と言ったら何と言い返されるか考える
0347デフォルトの名無しさん2014/11/05(水) 11:09:50.29ID:uuXXn0N9
いつ、ってたとえば、メッセージのストリームとか。
サーバとクライアントがあったとして、そのどっちでもいいんだけど、
そういったものは要するに、入力としてリクエストのストリームに対して、
出力としてレスポンスのストリームを返す関数として実装できるけど、
遅延でないと、ストリームが伸びてゆくだけでいつまでも本体が動かない。
0348デフォルトの名無しさん2014/11/05(水) 15:18:30.62ID:+orMvxZh
>>347
入力には正格 ByteString、出力は遅延 ByteString を用います。そういう風に使えてないとなると、あなたのコードはまだまだアマチュアなのです。
http://d.hatena.ne.jp/kazu-yamamoto/searchdiary?of=5&;word=%C3%D9%B1%E4

まだまだアマチュアなんだけど、347のケースで考えて理解を整理しました。こんな感じですかね?

サーバー内部では、クライアントからのリクエストはStrictなデータで保持されていて、対応するレスポンスはLazyなデータとして持っている。サーバーは必要なタイミングでLazyなレスポンスデータを出力する(その時点でStrictに変換される)。

もしレスポンスをStrictなデータにしたなら、場合によっては無限に膨れ上がる。
(なるほど、Lazyはメモリを食う、は間違ってましたね)
もしリクエストをLazyにしたなら?
致命的では無いけど、若干のオーバーヘッドがあって、その分が無駄。


>>346
getterとpublic変数(フィールド?)で迷ったら、ほぼ100%getterにするけど、言いたいのは、
直接扱うか、ラップして扱うか、の違いだってことかな。
ラップしたオブジェクトをごにょごにょして、終わったらgetterで取り出す。
ファイルパスビルダーからパス文字列を作るみたいな。
ああ、なるほど、HaskellではファイルパスビルダーはLazyな文字列の値として表現できるのか。


あれ?ByteString.Lazyって、
(1) a -> ByteString.Strict と同じ?
(2) IO ByteString.Strict で実現できる?
(3) ByteString.Lazy をseq やバンパターンでしょっちゅう評価すれば、それはByteString.Strictを使ってるのと同じこと?
0349デフォルトの名無しさん2014/11/05(水) 15:33:07.74ID:NLWWBEq7
~ foldr と foldl' の使い分け ~

データ構造が無限の長さ?
→ foldr
途中で短絡し得る?
→ foldr
それ以外
→ foldl'
0350デフォルトの名無しさん2014/11/05(水) 19:19:23.69ID:VU37lBTp
>>348
>あれ?ByteString.Lazyって、
>(1) a -> ByteString.Strict と同じ?
>(2) IO ByteString.Strict で実現できる?
Lazy.ByteStringは、[Strict.ByteString]とだいたい同じ
つまり、正格なByteStringで表現されたチャンクからなる遅延リスト

>(3) ByteString.Lazy をseq やバンパターンでしょっちゅう評価すれば、それはByteString.Strictを使ってるのと同じこと?
違う。seqやバンパターンは一番外側の構造しか評価しない(厳密にはWHNFまで評価する)
たとえば[Strict.ByteString]をseqで評価しても、一番外側が(:)か[]かが確定するだけで、中身は評価されない
Lazy.ByteStringをseqで評価すると最初のチャンクが評価されるっぽい
(これは仕様というより実装上たまたまこうなってるんだと思う)
0351デフォルトの名無しさん2014/11/05(水) 22:27:52.27ID:+orMvxZh
現時点での俺の理解は、
「レガシーな命令型言語で言う所の”リスト生成機”が、Haskellの[a]に対応している」です。
すると当然、Haskellでも正格データを返す関数やIOを使って、ジェネレータを作れば、それは遅延データと同じものになるのではないか。
もしそうなら何故遅延データが使われているのか。そういう疑問が浮かびました。
関数がcall by needなんだから、データは正格だけで十分では?

>>350
あ、なるほど確かにseqじゃダメですよね。全部のチャンクに至るまで評価しないと(deepseq?とかいうんでしたっけ)。
0352デフォルトの名無しさん2014/11/05(水) 22:43:18.42ID:+orMvxZh
つまり、こんな感じの...

type String = ByteString.Strict
newtype StringBuilder a = StringBuilder { getter :: a -> String }
cons :: String -> StringBuilder a -> StringBuilder a
cons s (StringBuilder f) = StringBuilder $ (s <>) . f
nil :: StringBuilder a
nil = StringBuilder $ const ""

で、cons,nilをプリミティブにして、多彩な文字列生成機合成を提供する。と。
0353デフォルトの名無しさん2014/11/05(水) 23:26:09.78ID:+orMvxZh
いや、なんかごっちゃになってますね… 352は忘れてください。

レガシーな言語では、”文字列生成機”は文字列を返す関数(関数オブジェクト)で表すことができるけど、Haskellの a -> String とは違うものですね。それでいうならたんにStringで良い。

xmas :: Text.Strict
xmas = "xmas !!"
merryxmas bocchi = "merry " ++ if (not bocchi) then xmas else "..."

xmas は正格データだけど、状況によっては評価されない。
0354デフォルトの名無しさん2014/11/06(木) 00:54:30.02ID:mLU2c/k8
レガシー言語は、フィールドをnullで初期化し、後で代入することで遅延データを作る
このため、nullや代入を許容する変数と許容しない変数を区別できないことが多い
0355デフォルトの名無しさん2014/11/06(木) 05:47:40.95ID:C8h5AOfQ
>>351
>すると当然、Haskellでも正格データを返す関数やIOを使って、ジェネレータを作れば、それは遅延データと同じものになるのではないか。
遅延データの性質として、
1. 要求されるまで計算されない
2. 複数回要求されても、一度しか計算されない
があるけど、ふつうの関数では(2)を満たせない
IOなら(1)も(2)も満たすようにできるけど、ユーザコードもIOを意識する必要が出てくるので不便
0356デフォルトの名無しさん2014/11/06(木) 07:47:09.97ID:ZVNa2/n1
純粋関数型なら満たそうと思えば満たせるのでは?
0357デフォルトの名無しさん2014/11/06(木) 08:21:54.61ID:+3ioqTnw
大人しくconduitとか使っとけ
0358デフォルトの名無しさん2014/11/06(木) 11:06:19.54ID:6vgYQ4+I
conduitってなんて読むの?コンドゥイット?コンドゥーイット?
0359デフォルトの名無しさん2014/11/06(木) 11:27:34.28ID:el8FQLIt
>>355

な、なるほど! 腑に落ちました。ありがと
0360デフォルトの名無しさん2014/11/06(木) 11:46:39.88ID:el8FQLIt
>>356
メモ化のことを言ってるんですね。
計算を同じサンクに結びつければ、計算は無駄に行われない。と。

ところで昨日あれから考えてて、もっと良い例を思いついたんですけど、
lazy :: a -> a
lazy a = (\() -> a) $ ()
を使えば、正格データを遅延に変えられますよね?
happyBirthDay :: Text.Strict
happyBirthDay = "Happy Birth Day " ++ lazy "to me..."

>> print $ head 16 happyBirthDay
Happy Birth Day

理解がバージョンアップされました。
「Haskellではナントカ生成機はナントカを弱頭部標準形に包むだけで実現できる。生成機を作る目的でレガシー言語のようにIO計算を作る必要はない。呼び出しをサンクにまとめればOK.」
0361デフォルトの名無しさん2014/11/06(木) 12:19:08.73ID:ki6zkhTW
>>358 水路 ttp://ejje.weblio.jp/content/conduit
0362デフォルトの名無しさん2014/11/06(木) 20:34:57.00ID:MUH9Buff
>>361

 ンデュェットか
0363デフォルトの名無しさん2014/11/06(木) 21:08:19.53ID:j9zZcG2n
コンジットでいいだろうが
0364デフォルトの名無しさん2014/11/07(金) 02:21:57.92ID:9j/jQs98
[´・_ オタクアニメの乳首は不自然すぎるぽよ
0365デフォルトの名無しさん2014/11/07(金) 06:23:52.22ID:QrO3W2z+
>>364
なりすまし死ね
0366デフォルトの名無しさん2014/11/07(金) 07:24:16.12ID:9j/jQs98
[´・_ 女の子の成長記録ってめっちゃ興奮するぽよ
0367デフォルトの名無しさん2014/11/07(金) 09:30:21.34ID:LIDPNOLM
田中先生は割と作品名具体的に挙げるからエミュするならその辺の知識押さえとかないと難しいぞ
0368デフォルトの名無しさん2014/11/07(金) 09:41:06.60ID:XgnNytLv
これなりすましって言うのか?w
0369デフォルトの名無しさん2014/11/07(金) 10:37:06.38ID:w9r+UzpW
手持ちのコードのdoの return を
return $! に代えたら、20%も高速化したんですけどwwww

前にtanakhさんが foldlは壊れている、正しくはfoldl'、っていう趣旨の翻訳記事を書いてたじゃない。それと同じように、return = (return $!)
で置き換えるべきなの?
0370デフォルトの名無しさん2014/11/07(金) 10:55:58.91ID:CYOEAapJ
WHNFまで評価しちゃっても構わない値ならそうだろうよ
0371デフォルトの名無しさん2014/11/07(金) 15:22:50.72ID:1clwNr+d
評価順序が変わると計算の意味が変わるので自分が何をやっているのか理解しないと
0372デフォルトの名無しさん2014/11/07(金) 16:32:32.22ID:w9r+UzpW
>>370
>>371

あ、わかった

print =<< (head . reverse <$> (return $! reverse [1..] ))
0373デフォルトの名無しさん2014/11/07(金) 17:00:51.66ID:5EqfDet1
この顔文字の人何でこんなに粘着されてんの?
0374デフォルトの名無しさん2014/11/07(金) 17:06:11.41ID:6pO9x6h7
returnの方が良いケースが5%、(return$!)が良いケースが25%、どっちでもいいのが70%
くらいだと思う
0375デフォルトの名無しさん2014/11/07(金) 17:06:49.99ID:B3DaCLD4
実は本人の確率
0376デフォルトの名無しさん2014/11/07(金) 18:01:23.96ID:7mel9rlk
レガシー言語はポインタ。Haskell はサンク。

難しいけど、抑えとかないと致命的になりうるんですよね。
0377デフォルトの名無しさん2014/11/07(金) 19:55:25.73ID:ehRLeVcR
foo = seq foo ('a':foo)
main = putStrLn (const "fooはthunk" foo)
0378デフォルトの名無しさん2014/11/08(土) 00:22:16.94ID:fHlqfJbD
haskellって遅くない?コンパイル後のファイルもでかいしさ
0379デフォルトの名無しさん2014/11/08(土) 00:41:10.20ID:vifAICnG
チューニングした上で言ってるのか?
0380デフォルトの名無しさん2014/11/08(土) 01:34:30.44ID:J9TuEpTu
>>379
コンパイル後のバイナリサイズはチューニングしようがなんだろうがデカいままだろうが
0381デフォルトの名無しさん2014/11/08(土) 03:09:20.05ID:vifAICnG
jhc 使えよ。
0382デフォルトの名無しさん2014/11/08(土) 11:41:08.63ID:LW7xiPF6
>>381
教えてくれてありがとう。言われなきゃ絶対気づかなかった‥ これは良さそうだわ。
0383デフォルトの名無しさん2014/11/08(土) 12:36:51.72ID:n7vP28K6
HaskellでAndroidアプリできる話はどうなったんだ
0384デフォルトの名無しさん2014/11/08(土) 13:19:08.56ID:u0osiKmL
"出来る"ってとこから進んでない気がする
0385デフォルトの名無しさん2014/11/09(日) 00:17:02.01ID:EqHSZtCW
ところでFRPのGUIアプリって何故か無いよね。理屈では可能だと思うんだけど。なんでだ?

> Android
外国の誰かがSodium でゲーム作ってたような。
0386デフォルトの名無しさん2014/11/09(日) 10:12:37.51ID:mRPDV88W
Haskell って意外と読みやすいコード書くの難しくない?
リスト操作やタプルを減らしてdo記法とか抽象度あげても、今度は何やってんだか分かんなくなるっていうか
0387デフォルトの名無しさん2014/11/09(日) 11:35:26.86ID:QOYwRKxw
コードは読まない
型しか見ない
キーボードを見ないで画面だけ見るのと同じ
0388デフォルトの名無しさん2014/11/09(日) 12:02:01.62ID:EqHSZtCW
悔しいが同意せざるを得ない。
Haskell は書くのは天国だが読むのは地獄。バグが出たなら書き直す。
0389デフォルトの名無しさん2014/11/09(日) 12:17:37.24ID:QOYwRKxw
書くのが天国だと思うなら
読まなくても再発明できる情報を最大限に脳に焼き付けてから実際のコードを読めばいい
大体予想通りのことしか書いてないから一瞬で読める
0390デフォルトの名無しさん2014/11/09(日) 12:32:22.24ID:GNDt7Bdm
そういう境地に達することに馬鹿馬鹿しい努力の時間使うよりもっと有意義なことしたい。
0391デフォルトの名無しさん2014/11/09(日) 15:11:32.03ID:itJxEnAR
俺は、デバッグの時は、QuickCheck で怪しい関数を特定したら、
あとはチラシの裏にでも手で簡約してみる。

これを効率よくやるために、可能な限り徹底的に純粋関数で計算する。
例えば、do の中で IO 入力があれば、入力された値をそこでゴニョゴニョせず、直ちに純粋関数に渡す。
たとえ超単純な計算でも、純粋関数に渡すクセをつけておく。

do の中でゴニョゴニョした方がソースコードの見通しが良いのなら、
バグが無いと確信できたあとでリファクタリングすればいい。

あと、デバッグが無いと確信できるまでは、関数内関数も使わない。
局所的にしか使わないちょっとした関数も全部トップに書く。
0392デフォルトの名無しさん2014/11/09(日) 15:34:11.22ID:ynWG2Vzt
Haskellが読みやすくするのはコードではない
Haskellが読みやすくするのは計算の構造です
0393デフォルトの名無しさん2014/11/09(日) 15:38:36.40ID:Wi6Wj++H
読みやすくないコードで書かれた計算の構造が読みやすいのか
0394デフォルトの名無しさん2014/11/09(日) 15:39:29.40ID:81qYhIbT
巷で喧伝されている関数型言語導入で生産性上がるというのは
関数型言語こねくり回せるくらい頭いいやつだけで開発するからってオチなのかもしかして
0395デフォルトの名無しさん2014/11/09(日) 15:48:17.92ID:ynWG2Vzt
>>393
コードと計算の構造は抽象度が違うので、同時に読みやすくなるということの方が例外でしょう
0396デフォルトの名無しさん2014/11/09(日) 15:54:14.02ID:ynWG2Vzt
>>394
生産性が上がるのは、関数型だからではなく、クロージャを代入できて値が不変にできるからではなかろうか
0397デフォルトの名無しさん2014/11/09(日) 17:10:26.68ID:TGkUuDSg
>>391 すげー参考になるわ。関数内関数はなるべく使わない。メモメモ

>>394
主観だけど、今書いてる100行のコードは、Objective-Cで書いてたころなら1000行くらい掛かってたと思う。ただし、コーディングに掛かる時間は同じくらいなので生産性は変わらず。
0398デフォルトの名無しさん2014/11/09(日) 17:18:22.10ID:ynWG2Vzt
>>397
今書いてるコードの行数ではなく、3ヶ月後に自分が書いたコードが保守できるかどうかで判断すべきかと…
0399デフォルトの名無しさん2014/11/09(日) 18:52:57.83ID:ZFAvQIio
>>345
SPJ先生の"Wearing the hair shirt - A retrospective on Haskell" に遅延評価の功罪について言及があるね
http://research.microsoft.com/en-us/um/people/simonpj/papers/haskell-retrospective/HaskellRetrospective.ppt

また、letとwhereなど記述に幅を持たせたのは大成功だったとも。
0400デフォルトの名無しさん2014/11/09(日) 18:54:03.25ID:ZFAvQIio
みんなもチクチクする毛糸を着よう
0401デフォルトの名無しさん2014/11/09(日) 19:00:10.66ID:ZFAvQIio
>>380
strip -p --strip-unneeded --remove-section=.comment
すると半分くらいになるよ。
0402デフォルトの名無しさん2014/11/09(日) 21:27:10.96ID:QOYwRKxw
>>398
それは記憶力の問題というより逆境に弱すぎる気がする
少し調子が悪くなっただけで狼狽して何もできなくなるパターン
0403デフォルトの名無しさん2014/11/09(日) 21:39:01.73ID:VKU6H7RB
精神論はよせ。肝要なのは持続可能な開発だ。
0404デフォルトの名無しさん2014/11/09(日) 21:44:21.85ID:QOYwRKxw
少しくらい忘れても致命傷にはならないから落ち着けと言ってるんだよ
絶対に記憶しろっていう方が精神論だ
0405デフォルトの名無しさん2014/11/09(日) 22:00:55.96ID:VKU6H7RB
誰がそんな事言った
0406デフォルトの名無しさん2014/11/09(日) 22:08:25.42ID:itJxEnAR
致命傷にはならなくても、思い出すだけでかなり時間とられたりするからな。
主要な関数だけでもドキュメントは書いておいた方がいいぞ。

引数と戻り値の意味、それとは別に計算のごく簡単な流れ。
これを書いておくだけで、後ですげー助かる。
過去の自分に感謝したくなるから。
0407デフォルトの名無しさん2014/11/09(日) 22:20:45.90ID:mbLWZpZk
書いたときは覚えてられると思っちゃうんだよな
0408デフォルトの名無しさん2014/11/09(日) 22:49:35.66ID:EqHSZtCW
>>399
ありがたい。勉強になるわ

>>401
マジ助かる! でも俺の環境(OSX)のstripコマンドにそのオプションはない… 代替を探してみる。
0409デフォルトの名無しさん2014/11/09(日) 22:50:21.62ID:9LyR+5oz
>>402
何を言ってるんだお前は
0410デフォルトの名無しさん2014/11/09(日) 22:56:40.68ID:EqHSZtCW
> 少し調子が悪くなっただけで狼狽して何もできなくなるパターン

擁護してくれた人には悪いんだけど、これはあるかも。
三ヶ月前のコードは読めない。バグらしき挙動を発見しても、直そうとして大量のtrace文を突っ込むことになる...
でも、書き直すと必ず短くて、わかりやすくなるんだよ。

要は設計がショボかったんだと思う。
0411デフォルトの名無しさん2014/11/10(月) 22:29:34.56ID:7cnYJA4z
毎日1万行程度のコードを書いてて、それを3ヶ月後まで覚えていられるなら、プログラミングだけではなく、もっと別のことでも一流になれると思う
0412デフォルトの名無しさん2014/11/10(月) 22:37:14.36ID:VLesXqGp
毎日1万行てどこのバケモンだよ
0413デフォルトの名無しさん2014/11/10(月) 22:40:26.50ID:7cnYJA4z
え?
0414デフォルトの名無しさん2014/11/10(月) 22:41:29.93ID:A0UHj1LA
>>412
C言語で3000行/日 の人はいるね。
http://d.hatena.ne.jp/softether/20070324
0415デフォルトの名無しさん2014/11/10(月) 22:51:55.41ID:i/Dk2pnq
>論理的な思考をしないで欲しいという意図を説明するために書くのだから、論理的に間違っている点については目をつぶって欲しい。


詭弁じゃね?
0416デフォルトの名無しさん2014/11/10(月) 23:05:05.03ID:a0CrBmRg
>>415
スレチ。っていうか本人に言えよw

その記事は要は、意識的に考えずに指の動くままに、フロー状態で書きまくれ、ってことだろう。
トライ&エラーでコーディングしてコンパイルエラーが出たりバグが出たりしてつまづいてやる気萎えたら無理だと思うけど、
Haskell には、前者の為にhole、後者の為に型チェックとQuickCheckがあるからね。

関数型は脳汁でるしな。

そういう状態には到達しやすいかも。
0417デフォルトの名無しさん2014/11/10(月) 23:05:58.36ID:f9SpYH13
覚えている必要はないんだよ。

必要なときに思い出せるようなキッカケが用意されていればいいんだ。
0418デフォルトの名無しさん2014/11/10(月) 23:09:48.57ID:7cnYJA4z
3ヶ月前なんて、どの会社のオフィスでコーディングしてたかすら手帳なしでは思い出せないよ
0419デフォルトの名無しさん2014/11/10(月) 23:27:16.41ID:NkZmj/dK
ソースを読めないユーザーが、開発者が知らないバグを知っていることもある
1万行を思い出す前にまず1行も読まなくてもわかることを全部思い出すのだ
0420デフォルトの名無しさん2014/11/10(月) 23:33:47.24ID:a0CrBmRg
>>417
でもリファクタリングすると、前のモデル忘れちゃわない?
3回くらい書き直した後、日にちが経って思い出そうとすると、最初に出てくるのは一番古いヤツだったり。ああ、あの後書き直したんだっけ、ってなる。

ひょっとして上の登氏みたく、設計は一発でバチっと決められちゃうタイプ?

>>418
意外とHaskell の仕事ってあるんだね。金融系?

>>419
? コードを思い出すんじゃなくて、抽象モデルを思い出せ、ってこと?
0421デフォルトの名無しさん2014/11/10(月) 23:35:00.73ID:feZKSxME
金融系だけで使われているうちは、まだまだだなと思う。
博徒専用言語というイメージだから。
0422デフォルトの名無しさん2014/11/10(月) 23:37:48.20ID:7cnYJA4z
経験上、自分が3ヶ月以上前に書いたコードは、他人が書いたコードと変わらない
ゆえに、他人が書いたコードを保守のしやすさこそがその言語の生産性といえる
0423デフォルトの名無しさん2014/11/10(月) 23:39:06.85ID:7cnYJA4z
>>420
大学からの下請け
0424デフォルトの名無しさん2014/11/10(月) 23:50:29.86ID:a0CrBmRg
おもしれー

昨日みた記事では確か、Haskell の生産性はTypeScript、Scalaに次いで3位って話だったけど(ソース失念)、
> ゆえに、他人が書いたコードを保守のしやすさこそがその言語の生産性といえる
その観点でみると、Haskell はどれくらい良い?
0425デフォルトの名無しさん2014/11/10(月) 23:56:00.83ID:7cnYJA4z
Haskellの生産性は年単位でみると低かった
理由は、コロコロと根幹部分のモジュールが変わったから

月単位では高い
理由は、同じ機能を実現するためのバリエーションが少ないから
0426デフォルトの名無しさん2014/11/11(火) 00:05:51.80ID:jUxCk/rZ
>>420
> >>417
> でもリファクタリングすると、前のモデル忘れちゃわない?

だから、忘れちゃっていいんだよ。

普通は git や Subversion を使ってるから、必要な時は思い出せる。
ドキュメント付いてれば尚更楽に思い出せる。
そういう、思い出すためのキッカケ(仕組み)を予め用意しておくんだよ。

ただ、ドキュメントがヘタッピだとヤバいな。
0427デフォルトの名無しさん2014/11/11(火) 00:09:57.47ID:AaX4/UOm
言語に順位をつける馬鹿馬鹿しい作業のせいで
言語非依存の技術を身につける機会がどれほど失われていることか
0428デフォルトの名無しさん2014/11/11(火) 00:11:32.49ID:RW6n7dRV
どれだけ自分が信用できないかは、議論するまでもなく、今、3ヶ月前のコードを見ればはっきりする
0429デフォルトの名無しさん2014/11/11(火) 00:12:45.97ID:RW6n7dRV
>>427
言語非依存の技術がなければ、言語に順位は付けられませんよ
0430デフォルトの名無しさん2014/11/11(火) 00:18:12.17ID:Mc4XktUM
>>425
コンディットとかの事を言ってるのか。

バリエーション少ない?
http://www.willamette.edu/~fruehr/haskell/evolution.html
例えばグラフを表現するにしても、隣接行列、隣接リスト、さらにリストにするか、セットにするか、ノードはOrd aにするか、単にIntでいいのか、ケースバイケースで色々あると思うんだけど?
0431デフォルトの名無しさん2014/11/11(火) 00:18:57.33ID:Mc4XktUM
失礼。
カ ンジッット
だったね。
0432デフォルトの名無しさん2014/11/11(火) 00:26:12.69ID:Red25WNb
>>426
なるほど。思い出すキッカケとしての、ドキュメント。メモメモ
あんま意識してなかったけど、確かに助けにはなっているかも。個人的には、関数へのコメントより、ファイル冒頭に設計指針を書いておくほうが多いです。

> ただ、ドキュメントがヘタッピだとヤバいな。

自信はないけど、自分が読めるから、取り敢えず、いいか、な
0433デフォルトの名無しさん2014/11/11(火) 00:29:37.46ID:RW6n7dRV
>>430
断言するが、lispやCやJavaと比べたら、プログラマにある機能を要求したときに提出されるコードのバリエーションが、Haskellは極めて少ない
0434デフォルトの名無しさん2014/11/11(火) 04:25:03.93ID:m7WVeZhS
なわけないw
0435デフォルトの名無しさん2014/11/11(火) 07:51:04.83ID:XbL/s6PQ
アムダールの法則だかラムサールの条約だかに絶望した
コアが増えていけば速くなり続けて行くと思ってたのに……
メニーコアとは幻想だったのか…
0436デフォルトの名無しさん2014/11/11(火) 08:05:50.97ID:/UGcfCAO
ランダウアーの限界はもちろん現在の通常のコンピュータにとっては問題にならないほど小さな値である。
あっちにも書いたけどこっちにも転載
0437デフォルトの名無しさん2014/11/11(火) 08:14:04.59ID:IHNztH1r
>>433
実践的なHaskellコードを読んで絶望しろ
0438デフォルトの名無しさん2014/11/11(火) 13:58:02.38ID:j+uyDxfA
初歩的な質問失礼します。

:!でターミナルのコマンドが使えますが、これを関数に組み込むにはどのようにしたらよいのでしょうか?例えば、
foo = :! pwd
と定義したfooを実行したらカレントディレクトリを表示する、というようなことをしたいのですが(もちろん、これはコンパイルできませんが)、どのようにしたら良いでしょうか。

基本的なことで恐縮ですが、ググっても目的の答えに辿りつけなかったので質問しました。
0439デフォルトの名無しさん2014/11/11(火) 14:19:11.58ID:L4zKGcL9
System.Processを見てみるといい
https://www.haskell.org/ghc/docs/latest/html/libraries/process-1.2.0.0/System-Process.html

foo = callCommand "pwd"
0440デフォルトの名無しさん2014/11/11(火) 18:28:48.53ID:j+uyDxfA
>>439
希望することができました。
ありがとうございます。
0441デフォルトの名無しさん2014/11/13(木) 14:25:56.14ID:/hesX7bc
Behavior って何のためにあるの?

pullで何かしたいなら、合成したイベントハンドラにファンクター的に中身に変換掛ければいいじゃない。
0442デフォルトの名無しさん2014/11/13(木) 14:28:29.72ID:/hesX7bc
そうだよ。FRPはシンプルにイベントハンドラ合成プログラミングでいいんだよ。
"時間変化する値"っていう抽象は、一見わかりやすいけど、本質的じゃないよ。
0443デフォルトの名無しさん2014/11/13(木) 20:12:29.70ID:qEFCMURu
>>441
それで済む場合もあるけど、Behaviorがあった方が便利な場合もある
例えば、同じソースを監視するイベントハンドラが複数あったら
全部個別にfmap(実際はcontramap)しなきゃならなくて、
重い関数を適用したい場合はコストが問題になる
0444デフォルトの名無しさん2014/11/13(木) 20:54:00.50ID:Hgbf31UD
イベントハンドラだけなら IO () で十分だけど型情報がなさすぎて気持ち悪いから
型システムのために Behavior a を作ったんだろう
0445デフォルトの名無しさん2014/11/13(木) 20:54:43.82ID:fBmBaE/A
>>443
elereaのシグナルを学んだばかりで、Behavior の概念に馴染めてないから、いまひとつピンとこないんだけど、

複数のイベントハンドラ、がそれぞれEvent、でいいんだよね?
mouseDownとかmouseMoveとかwheelScrollとかかな?
で、マウス位置(xy座標)をストリーム(Eventシグナル)に載せているんだけど、例えばx座標だけを抜きたい時、\(x,y) -> x をそれぞれのEventに対してcontramapする。
こういう認識であってるかな?

もしそうなら、Behavior は重い関数を掛けるときのパフォーマンス劣化の問題を、どうやって解決するんだい?
解説頼む。
0446デフォルトの名無しさん2014/11/13(木) 21:51:34.46ID:4Xr/dCjq
>>441
Behavior を(も)使った方が解りやすいというタイプの人のためにある。

Behavior よく解らん、Event 解りやすいという人は、Behavior のことは気にしなくていい。

両方使ったり、片方だけで代用したり、いかようにも表現できる。
0447デフォルトの名無しさん2014/11/13(木) 22:11:56.86ID:/hesX7bc
>>446
なんだか、甘味料と砂糖みたいな関係ですね。
晩御飯のすき焼き、甘味料で作ってみようかなあ。

煽りはさておき、Behavior がどういう概念で、どういうシーンでしっくりくるのか、興味があります。
あなたなりの理解を教えていただけると幸いです。
0448デフォルトの名無しさん2014/11/13(木) 22:48:25.29ID:fBmBaE/A
FRP良質入門サイトのURL下さい
0449デフォルトの名無しさん2014/11/13(木) 23:19:59.71ID:8WQaaDuG
>>448

elereaはドキュメントに用例が多くて助かります。
https://hackage.haskell.org/package/elerea-2.7.0.2/docs/FRP-Elerea-Simple.html
特に、A longer example の節は必見

GUIアプリの例。解説のHTMLが同梱されています
https://hackage.haskell.org/package/elerea-examples
0450デフォルトの名無しさん2014/11/13(木) 23:41:31.63ID:iWKxp8OY
>>449
多謝
0451デフォルトの名無しさん2014/11/14(金) 14:21:56.46ID:WNZtrPXa
Behavior って物理シュミレーション的なシーンで便利なんだ。

加速度を積分して速度、積分して位置にしたり。
リストのスクロールを摩擦係数をいじって減速度合いを変えたり。
0452デフォルトの名無しさん2014/11/14(金) 14:36:53.44ID:+69VmKY1
EventではApplicativeが作れないからそれに代わるものが欲しいと
elereaのSignalはMonadだからやりたい放題できるからそれに慣れると分ける意味わからんよな
0453デフォルトの名無しさん2014/11/14(金) 22:26:54.48ID:WNZtrPXa
ジッジ「珠玉のアルゴリズム買ってきたで」
ワイ「わーい」
0454デフォルトの名無しさん2014/11/14(金) 23:05:43.56ID:DkHiTH1Y
Amazon予約したのにまだこない。北海道だからか?
0455デフォルトの名無しさん2014/11/14(金) 23:52:30.13ID:qCbHalO3
感想
久しぶりに読みにくい日本語に出会った
0456デフォルトの名無しさん2014/11/15(土) 03:09:27.49ID:TFMH5uTn
>>454
予約の話をしよう、あれは今から36万・・・いや、1万4000年前だったか、
まぁいい、私にとってはつい昨日の予約だが、君たちにとっては多分明日の予約だ
0457デフォルトの名無しさん2014/11/15(土) 07:17:39.36ID:YUaatuso
>>456
6日に http://gihyo.jp/book/2014/978-4-7741-6926-2
と併せて予約したのにまだ片方さえ届かないのか
Amazonは発売日に届くように逆算して発売日前から発送してくれないのかよ
何のための予約だよ(日記帳終わり)
0458デフォルトの名無しさん2014/11/15(土) 08:34:31.54ID:H+rNrAzt
東京でもまだなんだよなぁ
0459デフォルトの名無しさん2014/11/15(土) 15:15:48.89ID:6XZYIjlt
本当に必要となるまで遅延される
0460デフォルトの名無しさん2014/11/15(土) 16:10:01.92ID:sWhlw3Sr
>>459
評価する
0461デフォルトの名無しさん2014/11/15(土) 16:33:34.62ID:RGetlYiU
俺にはまだ早いということか……、くっ!
0462デフォルトの名無しさん2014/11/15(土) 17:04:09.67ID:VFt6Efys
いつも思うけど、訳が悪いのか、それとも、そもそも英語の状態からして難解なのか…
0463デフォルトの名無しさん2014/11/15(土) 19:09:22.58ID:LR57/AKQ
原著を積んでる俺に隙は無かった
0464デフォルトの名無しさん2014/11/15(土) 21:11:35.46ID:/FINKz8G
悪訳はマジで勘弁
どんな良書も一瞬でただの資源ごみだからな

読みにくいって
文意を理解できないから主語を誤魔化すために省くとか全体の流れが分からないから指示語をそのままとかそういうレベル?
それとも直訳過ぎて日本語に馴染んで無いとか?
0465デフォルトの名無しさん2014/11/15(土) 21:21:47.87ID:sWhlw3Sr
俺は普通に読めてる。今のところ訳に問題は感じてない。ただ、サラサラと読めるかというとそんなことはない。前著の"関数プログラミングの楽しみ"以上に難しい内容。
0466デフォルトの名無しさん2014/11/15(土) 23:55:43.29ID:sS71apjV
>>445
elerea を使って Event を理解できたのなら、
elerea 以外のも触ってみれば Behavior もちゃんと理解できると思う。

なんで Behavior の方は実物に一度も触れずに人に聞くの?

>>447
「概念」といったら、Behavior は時間を引数にとった連続関数、
Event は時間と値のペアのストリームだ。

Behavior がしっくりくるシーンの代表は >>451 が挙げている。


二人も、その他の FRP に興味がある人も、
古典「The Haskell School of Expression」を読んで、
簡単な FRP の仕組みを自分で作ってみることをお勧めする。
この本に書かれた方法はスペースリークを起こす事が既に知られてるが、
概念とその実装の「基礎知識」を学ぶにはとてもよい本だ。
他の FRP を学ぶ上でもこの知識はきっと役立つ。
0467デフォルトの名無しさん2014/11/16(日) 00:35:43.95ID:A54MayZ4
>>466
おお!ありがとう。誤解があるようだけど、俺は445でかつ451なんだ。

FRPは基本的な概念がまだ揺蕩っている気がする。


Conal Elliot がブログで Garbage Collecting the Smantics of FRPとか言っていて、"時間の関数だというなら任意の時刻にタイムスリップできなきゃならないが、実際にはできない、おかしい"って言ってる。

Javascript界隈で定評のあるBacon.jsは同氏によって"紛い物"扱いされている(理由はBehaviorが無いから)。

黎明期のFRPはスペースリークとかあったらしいけど、今のFRPはいろんなテクを駆使して問題を克服したようだ。

シンプルで分かりやすく、ゲームアプリに使われた事のあるelerea は、残念なことにpull式で、アイドリング時の計算力が無駄なので、最近、push版、ordreaが出来た。
しかし驚くなかれ。ordreaのBehavior には、delayがある。
繰り返す、delayがある。
…Behavior は"時間の関数"じゃなかったのか??

ごく最近、FRPはComonadicにすべきだ、という声を聞くようになった。
何故Comonadic? 理由がよく分からないし、その実装は未だ現れていない。


…そんな感じで、色々混乱がみられるようなので、正直突っ込んでいくのが怖い、"差し足忍び足"でにじり寄っている、訳なのです。
0468デフォルトの名無しさん2014/11/16(日) 00:40:11.44ID:A54MayZ4
あとYampaも。製作者か誰かが書いた最適化戦略の論文が出回ってて、かなり信頼性高そうだけど、なんか忌避されてる感じがある。理由がよく分からない。
Arrowだから? なんで?
0469デフォルトの名無しさん2014/11/16(日) 09:00:25.19ID:0kiSer6o
FRP に限らんが、最新の動向をニュースのヘッドラインを眺めるように追いかけても、
理解できなきゃあまり意味がない、自分が最先端にいるような気になるだけだ。

そんなことより、理解できるところまで時代をさかのぼって、
「自分で実装しながら」ゆっくり学んだ方がいい。
使うだけなら道具の仕組みは知らなくてもいいと安心して言える段階までは、
FRP はまだ発達していないと思う。

そういう意味も込めて古典を勧めた。
0470デフォルトの名無しさん2014/11/16(日) 10:47:38.97ID:BSgxTQPu
http://i.imgur.com/xwv3Ygg.jpg
http://i.imgur.com/9CrKJj8.jpg
http://i.imgur.com/WI4JiPE.jpg

キタ━━━━━━(゚∀゚)━━━━━━ !!!!!(日記帳)
0471デフォルトの名無しさん2014/11/16(日) 10:49:08.23ID:dZjA1otH
>>470
こうゆうので何するの?
0472デフォルトの名無しさん2014/11/16(日) 10:50:11.56ID:BSgxTQPu
興奮
0473デフォルトの名無しさん2014/11/16(日) 10:57:29.61ID:O/HDzlyF
画質悪っ
0474デフォルトの名無しさん2014/11/16(日) 11:00:06.30ID:BSgxTQPu
画質良すぎたらアップロードサイズ制限に引っ掛かるのではないだろうか
画質は今本質的問題なのだろうか
0475デフォルトの名無しさん2014/11/16(日) 11:18:24.45ID:O/HDzlyF
> 画質良すぎたらアップロードサイズ制限に引っ掛かるのではないだろうか

( ゚д゚)ポカーン
0476デフォルトの名無しさん2014/11/16(日) 11:21:30.50ID:BSgxTQPu
やめて!苛めないで!
0477デフォルトの名無しさん2014/11/16(日) 11:39:39.31ID:0kiSer6o
画質というよりは、光の当て方が悪いだけかと
0478デフォルトの名無しさん2014/11/16(日) 11:54:58.67ID:BSgxTQPu
僕はHaskellの事だけ考えたいんです。撮影技術を気にする余力はありません
0479デフォルトの名無しさん2014/11/16(日) 12:04:37.22ID:0kiSer6o
だったら、Haskell の本の写真なんか載せないで、内容を語らないか?

第**章は〜〜だから##という人には読む価値あるとか、
〜〜の意味が分からないんだがとか。
0480デフォルトの名無しさん2014/11/16(日) 12:41:45.03ID:h/BFfBTx
数独ソルバって"Parallel and Concurrent Programming with Haskell"に出てくる↓とは別物なの?
https://github.com/simonmar/par-tutorial/blob/master/code/Sudoku.hs
0481デフォルトの名無しさん2014/11/16(日) 18:57:25.78ID:DSW7+wxd
Haskellやってみたくて入門書何冊かよんだけど
どうにも腰を据えてやるのが面倒おじさんだ!
0482デフォルトの名無しさん2014/11/16(日) 23:46:13.69ID:SPZ76mJJ
Haskell習い立ての者ですが昇順ソートが覚えられません。。。
sort([]) = []
sort([a]) = [a]
sort(a:as) = if a<head(sort(as)) then a:sort(as) else head(sort(as)):sort(a:tail(sort(as)))
トレースすれば正しいことは分かるんだけど、ごちゃごちゃしすぎて、いざ自分で書けと言われても書けない
覚え方とかある?vbだともっと簡単に書けるのに〜。
0483デフォルトの名無しさん2014/11/17(月) 00:11:16.80ID:y9knIlZH
なんですかこのコードはゴルフですか
0484デフォルトの名無しさん2014/11/17(月) 00:41:19.55ID:JCmU98W/
原子炉破損で燃料のウラン飛散か

東京電力福島第一原子力発電所の事故が起きた
直後に茨城県内で採取された大気中のチリから、
ウランのほか原子炉内の構造物の素材が検出され、
分析に当たった研究グループは早い段階から
大規模な原子炉の破損が進んでいたことを裏付ける結果だとして、
さらに分析を進めることにしています。

東京理科大学の中井泉教授らの研究グループは、
福島第一原発の事故直後の3月14日の夜から翌朝にかけて
原発から130キロ離れた茨城県つくば市で
採取した大気中のチリを兵庫県にある
大型の放射光施設「スプリング8」で分析しました。
その結果、放射性セシウムのほか、ウランや
燃料棒の素材のジルコニウム、圧力容器の素材の鉄など、
核燃料や原子炉内の構造物と一致する物質が
検出されたということです。
0485デフォルトの名無しさん2014/11/17(月) 03:35:50.14ID:hLMcf2Z5
>>482
MArrayかMVector使えばいいと思うよ
0486デフォルトの名無しさん2014/11/17(月) 05:38:52.09ID:AbWjP/0S
>>482
このソースのことは忘れて「haskell 挿入ソート」あたりでググるのおすすめ
0487デフォルトの名無しさん2014/11/17(月) 06:35:19.84ID:QJkSjCVs
珠玉難し過ぎワロタwwwwww
ハッカーの楽しみ以来の脳の軋みwwwwwww
登場する学生四天王が天才過ぎるwwwwwJackにすら勝てる気がしねぇwwwwww
0488デフォルトの名無しさん2014/11/17(月) 06:50:49.07ID:BFTy11pz
>>467
ordreaにdelayがあるのは、elereaやordreaでは時間は離散的にしか進まないから
0489デフォルトの名無しさん2014/11/17(月) 08:18:43.21ID:8RP3+bwS
>>487
短い会話からも、奴らの頭の良さがにじみ出てる
あんな学生が普通にいたら死ねる
0490デフォルトの名無しさん2014/11/17(月) 11:06:41.87ID:qgSbIZK1
オクスフォード大にはあぁいう学生がゴロゴロいるんだろうね
0491デフォルトの名無しさん2014/11/17(月) 11:55:09.24ID:JCmU98W/
放射性ヨウ素、半減期8.02日

福島県の下水処理場から放射性ヨウ素を744Bq/kg検出

10月下旬頃からヨウ素の検出量が増加傾向
東京や山梨の処理場でもヨウ素
0492デフォルトの名無しさん2014/11/17(月) 11:57:08.85ID:JCmU98W/
福島第一地下汚染の記録(東京電力発表)
2013年11月11日 55万ベクレル
2013年11月25日 91万ベクレル
2013年12月 4日 130万ベクレル
2013年12月12日 180万ベクレル
2013年12月19日 190万ベクレル
2013年12月26日 210万ベクレル
2014年 1月 9日 220万ベクレル
2014年 1月13日 240万ベクレル
2014年 1月16日 270万ベクレル
2014年 1月20日 310万ベクレル
2014年 2月 6日 500万ベクレル
2014年 3月 公表なし←(絶対ここでなんかあったろw)
2014年 4月 公表なし←
2014年 5月 公表なし←
2014年 6月 公表なし←
2014年 7月 ガレキ4兆ベクレル発覚も、公表せず←!?
2014年 8月 公表なし←
2014年 9月 公表なし←
2014年10月 公表なし←
2014年11月 再臨界してたわ←【今ここ】
0493デフォルトの名無しさん2014/11/17(月) 12:57:56.42ID:OB81v1Lm
オックスフォードって1日八時間勉強しないとついて行けないカリキュラム設定なんでしょ
社会人が八時間働くからそういう設定なんだと
日本のモラトリアムとは格が違うな
0494デフォルトの名無しさん2014/11/17(月) 13:32:47.89ID:VgYWB20P
てめぇが日本の大学の現状に無知、ということだけはよくわかるよ。
0495デフォルトの名無しさん2014/11/17(月) 16:54:09.37ID:AddMZ2qD
まあいわゆるFランとかは実際モラトリアム
0496デフォルトの名無しさん2014/11/17(月) 17:06:16.83ID:QJkSjCVs
>>488
わかってます。

ordreaでは
Event : pushなシグナル
Behavior : pullなシグナル
に過ぎなくて、完全に実装側の都合になってしまっているんです。
細かいパフォーマンスチューンの為に便利なのは嬉しいけど、Behaviorが本来持っていた概念としての分かりやすさ、エレガントさは失われてる。

今の俺のスキルでは、どうすればいいのか分からないので、勧めてもらったとおりSOEを読んで実装してみることにします。


…でもその前に、目の前にあるキラキラしたグリーンの本をやっつけなくては。
0497デフォルトの名無しさん2014/11/17(月) 17:09:00.58ID:QJkSjCVs
Marrrryyyyyyyyyyy!!!!!! 結婚してくれええええええ
0498デフォルトの名無しさん2014/11/17(月) 17:20:36.77ID:voo8eoNB
http://i.imgur.com/m5IcvPs.jpg
http://i.imgur.com/DTVCgJ0.jpg
http://i.imgur.com/ASFTXZK.jpg
http://i.imgur.com/3o3vsjy.jpg

キタ━━━━━━(゚∀゚)━━━━━━ !!!!!
0499デフォルトの名無しさん2014/11/17(月) 18:00:23.77ID:QJkSjCVs
>>498
お!そっちの方も来たんだ!
俺はお金なくて買えなかったけど(ヽ´ω`)、後半が面白そうなんだよねえ
感想よろしく

> 数独
ワロタ
0500デフォルトの名無しさん2014/11/17(月) 20:54:59.66ID:nGO8OPEK
数独って、もはや Hello world 的な存在だな
0501デフォルトの名無しさん2014/11/17(月) 22:31:59.02ID:2JrgHRvL
数独よりもバリバリの数値計算のHaskell本が欲しいです
0502デフォルトの名無しさん2014/11/17(月) 22:34:27.53ID:syCsv4O3
数独は良問を探すデータマイニング的な存在です
0503デフォルトの名無しさん2014/11/17(月) 22:49:14.27ID:nGO8OPEK
>>501
バリバリの数値計算というと例えば?
0504デフォルトの名無しさん2014/11/17(月) 23:09:07.19ID:2JrgHRvL
>>503
とりあえず、ガウスの消去法
IORefやSTモナドなしだと、200×200で反応が返ってこなくなったから
0505デフォルトの名無しさん2014/11/17(月) 23:19:12.75ID:nGO8OPEK
>>504
数値計算は手段ではなく目的?
リストだけでどこまで速度上げられるかとか、パズルを解くみたいな?
0506デフォルトの名無しさん2014/11/17(月) 23:31:00.84ID:2JrgHRvL
記号処理よりも数値計算の方が、正しい答えが出てきたときに感動するのは俺だけか…
0507デフォルトの名無しさん2014/11/18(火) 00:00:04.08ID:tPZakqVi
型推論が記号処理なので
Haskellから型推論を取ったら、IORef禁止みたいな風潮だけが残るので
0508デフォルトの名無しさん2014/11/18(火) 01:48:53.67ID:VVZUudvp
そうか!並列と並行の決定的な違いは決定的か否かか!
0509デフォルトの名無しさん2014/11/18(火) 02:03:55.59ID:ifNBpZ/j
決定的に間違ってる
0510デフォルトの名無しさん2014/11/18(火) 02:17:48.61ID:VVZUudvp
早期間違いかくにん!
よかった。
0511デフォルトの名無しさん2014/11/18(火) 02:54:53.40ID:wWmOGLrh
数値計算してその結果をOpenGLで表示していろんな角度から見るみたいなやつは、IORef禁止だとどうやるのか知りたいのだが、文献がないです
IORefありだとサンプルコードがたくさん落ちてるんですが
0512デフォルトの名無しさん2014/11/18(火) 06:19:58.70ID:kNmk90Po
なぜIORefを禁止したいのか
0513デフォルトの名無しさん2014/11/18(火) 06:20:29.45ID:rqEbaZI0
IORef って使ったらダメなヤツなん?
0514デフォルトの名無しさん2014/11/18(火) 07:29:07.78ID:VVZUudvp
IORef 使う
IORef use
IORefuse
0515デフォルトの名無しさん2014/11/18(火) 11:26:42.95ID:VVZUudvp
すいません誤爆しました
0516デフォルトの名無しさん2014/11/18(火) 11:39:31.80ID:/vvH7+qL
gnuplotでpoint cloud読み込んで色んな角度から見ればよくね?
0517デフォルトの名無しさん2014/11/18(火) 17:49:10.66ID:VJRmI7w/
>>511
数値計算することと、その結果を OpenGL が扱える形に加工することは別だと思うが。
0518デフォルトの名無しさん2014/11/18(火) 20:54:45.29ID:zT9F6uSW
>>517
人間が見やすく出力することまで含めてアルゴリズムです
0519デフォルトの名無しさん2014/11/18(火) 22:09:58.52ID:uPPCqZ2T
嘘だろ
0520デフォルトの名無しさん2014/11/18(火) 22:23:32.75ID:zT9F6uSW
チューリングマシンでキモとなる部分は実は「出力」です
0521デフォルトの名無しさん2014/11/18(火) 22:41:39.96ID:VJRmI7w/
>>518
冗談で言っているのは分かっているが、その冗談が全く面白くないので敢えてマジレスする。

問題を幾つかのより小さな部分問題に分けるべきだ。


それはそうと、数値計算した結果を基にポリゴンデータを作り、
それを頂点バッファに入れて描画するんだよな。

どこに IORef が出てくる余地があるんだろ。
0522デフォルトの名無しさん2014/11/18(火) 23:09:39.35ID:zT9F6uSW
>>521
グローバル座標に対するポリゴンデータのローカル座標や角度をIORef の変数に入れておく
0523デフォルトの名無しさん2014/11/18(火) 23:50:49.80ID:rqEbaZI0
数値計算した結果を、ドラッグしたりスライダーで調整して見る側面を変えたい、みたいな感じ?

それならIORefは原理的に避けられないんじゃない?
0524デフォルトの名無しさん2014/11/19(水) 00:12:45.58ID:iJeLzP9T
いや、そんなことないか。
0525デフォルトの名無しさん2014/11/19(水) 00:38:14.27ID:+lGGt82v
>>524
IORefかSTモナドを利用せずに、モデルをくるくる動かす方法を知らない
0526デフォルトの名無しさん2014/11/19(水) 01:07:49.10ID:iJeLzP9T
>>525
イベントハンドラを登録しなおせばいいんだよ。
イベントが発生した時点で、次の状態遷移用のイベントハンドラを新たに作って、それで置き換える。
0527デフォルトの名無しさん2014/11/19(水) 02:38:01.95ID:xfpEOWrn
http://www.dotup.org/uploda/www.dotup.org9292.jpg

60年後のごちうさ
0528デフォルトの名無しさん2014/11/19(水) 06:45:34.30ID:WtffXByM
それがHaskellになんの関係があるんですか
最近日記帳やら原発やら上の画像やらぽよやらスレの私物化が目立ちます
粛清していきましょう
0529デフォルトの名無しさん2014/11/19(水) 13:11:24.21ID:OfAlx19R
Haskell Platformのサイト落ちとるやんけ
0530デフォルトの名無しさん2014/11/19(水) 13:45:28.57ID:nUINe3lu
Mac OS Xでghc, haskell-platformを導入しました。
ghciやghcが動くことは確認できていて、ghc-mod, hlintを導入してvimの開発環境を整えていざプロジェクトをつくろうとしたのですが、 `cabal install --enable-test`をするとregex-posixのbuildに失敗してしまいます.
エラーメッセージを読んでみましたが改善策がわかりません。ご教授いただけないでしょうか
ghc -- 7.8.3
cabal -- 1.20.0.3
です

以下,
`cabal install --enable-test --only-dependency`時のエラー部分です.

Building regex-posix-0.95.2...
Preprocessing library regex-posix-0.95.2...
ld: library not found for -lgmp
clang: error: linker command failed with exit code 1 (use -v to see invocation)
linking dist/build/Text/Regex/Posix/Wrap_hsc_make.o failed (exit code 1)
command was: /usr/bin/gcc dist/build/Text/Regex/Posix/Wrap_hsc_make.o dist/build/Text/Regex/Posix/Wrap_hsc_utils.o -o dist/build/Text/Regex/Posix/Wrap_hsc_make
-m64 -L/Users/nao/.cabal/lib/x86_64-osx-ghc-7.8.3/regex-base-0.93.2 -L/Users/nao/.cabal/lib/x86_64-osx-ghc-7.8.3/mtl-2.2.1
-L/Users/nao/.cabal/lib/x86_64-osx-ghc-7.8.3/transformers-0.4.2.0 -L/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/containers-0.5.5.1
-L/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/bytestring-0.10.4.0 -L/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/deepseq-1.3.0.2 -L/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/array-0.5.0.0
-L/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/base-4.7.0.1 -liconv
-L/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/integer-gmp-0.5.1.0 -lgmp -L/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/ghc-prim-0.3.1.0 -L/usr/local/Cellar/ghc/7.8.3/lib/ghc-7.8.3/rts-1.0 -lm -ldl
Installed xml-1.3.13
cabal: Error: some packages failed to install:
regex-posix-0.95.2 failed during the building phase. The exception was:
ExitFailure 1
test-framework-0.8.0.3 depends on regex-posix-0.95.2 which failed to install.
0531デフォルトの名無しさん2014/11/19(水) 14:43:25.94ID:2Q63zwZ5
Macのことはよく知らないけど、
ld: library not found for -lgmp
なんだからgmpが入ってないのでは?

とりあえずgmpがインストールされてるか確認してみて、なければ入れてみれば
0532デフォルトの名無しさん2014/11/19(水) 14:44:54.00ID:nUINe3lu
はい。そう思ってgmpの存在も確かめてみたのですが, どうやらちゃんとはいってるぽいんですよね...
いま調べていたらmacのgccはllvmのwrapper?らしいので, gccを別で入れなおしてそっちでやってみます
0533デフォルトの名無しさん2014/11/20(木) 00:02:15.34ID:JlnMRpIf
>>532
-v とか -v3 とかつけると、詳細なエラーメッセージがみれるよ。
パスが違ってるか、libgmpがおかしいか、だと思う。
0534デフォルトの名無しさん2014/11/20(木) 00:07:57.61ID:Po2bP3CX
[´・_ 外でおしっこをしている女性は大勢いるぽよ
0535デフォルトの名無しさん2014/11/20(木) 00:50:38.85ID:OJJlSD0q
そうか。
0536デフォルトの名無しさん2014/11/20(木) 17:41:56.95ID:sAQTKHkd
T(n) = 2T(n/2) + O(n)
なら
T(n) = O(n log n)
なの? なんで?

ワカンネ
0537はちみつ餃子 ◆8X2XSCHEME 2014/11/20(木) 17:55:38.37ID:OJJlSD0q
>>536
ヒント: 極限
0538デフォルトの名無しさん2014/11/20(木) 18:07:33.93ID:sAQTKHkd
数学的帰納法で証明できたっぽいけどふにおちん。
極限でとけんの? 教えてクレクレ
0539デフォルトの名無しさん2014/11/20(木) 18:11:13.19ID:SrHOb8b0
T(n) = 2T(n/2) + O(n)

T(n) = 2T(n/2) + a * n.
U(n) = T(2^n) とおく。log を 2 を底とする対数関数として、
T(n) = U(log n) = 2T(n/2) + a * n = 2U(log n - 1) + a * n.
N = log n とおくと、
U(N) = 2U(N-1) + a * 2^N.
両辺を 2^N で割ると
U(N)/2^N = U(N-1)/2^(N-1) + a.
よって、
U(N)/2^N = a N.
i.e. U(N) = a N * 2 ^ N.
N = log n. U(N) = T(n) より、
T(n) = a log n * n = O(n log n).

高校レベルの知識で解いたらこうなった
0540デフォルトの名無しさん2014/11/20(木) 18:59:18.90ID:sAQTKHkd
ほーlog nで置き換えのがコツなんやね

何がワカッテネーのかは判った。TやO同士の四則演算とEqインスタンスだ。
上の証明でいうとO(n)をa*nで置き換えるのがまだ解ってない。
0541デフォルトの名無しさん2014/11/20(木) 19:16:13.26ID:SrHOb8b0
> 上の証明でいうとO(n)をa*nで置き換えるのがまだ解ってない。

見通しが良いからそう変えただけで、別にそこは置き換えなくても無問題だが。
0542デフォルトの名無しさん2014/11/20(木) 22:12:13.76ID:JlnMRpIf
>>541
そお?
オーダ記法のまま
> 両辺を 2^N で割ると
をすると、
O(2^N) / 2^N
になるけど、これって何言ってんだかわかんなくない?
0543デフォルトの名無しさん2014/11/20(木) 22:30:20.76ID:SrHOb8b0
>>542
O(1) 以外の何物でもない
0544デフォルトの名無しさん2014/11/20(木) 22:38:16.17ID:JlnMRpIf
>>543
うーん、やっぱりその辺がわかってないんだよなぁ。O(1)に等しいのはなんとなく解るけど。。
例えば
O(n) + O(n) = O(n)
の左辺は何を意味してるの?
0545デフォルトの名無しさん2014/11/20(木) 22:40:30.46ID:M0tgSF32
O(n)
nが大きいとき、ある定数 c が存在して c・n と表現できる
0546デフォルトの名無しさん2014/11/20(木) 22:45:56.04ID:YOls+I/j
O(n) = a*n
じゃなくて
O(n) = f(n) where 定数 a が存在し全ての n に対し f(n)/n < a
とすれば

T(n) - 2*T(n/2) = f(n)
2*T(n/2) - 4*T(n/4) = 2*f(n/2)
4*T(n/4) - 8*T(n/8) = 4*f(n/4)
...
(n/2)*T(2) - n*T(1) = (n/2)*f(2)

T(n) - n*T(1) = f(n) + 2*f(n/2) + 4*f(n/4) + ... + (n/2)*f(2)
T(n) - n*T(1) = n*(f(n)/n + f(n/2)/(n/2) + f(n/4)/(n/4) + ... + f(2)/2)
T(n) - n*T(1) < n*a*log2(n)
0547デフォルトの名無しさん2014/11/20(木) 23:05:58.21ID:JlnMRpIf
>>546
巧みだ… それなら納得。
0548デフォルトの名無しさん2014/11/21(金) 01:49:45.87ID:NEpg6FcO
>>534
なりすまし死ね
0549デフォルトの名無しさん2014/11/21(金) 11:00:50.89ID:MN55iJxH
数学は和と積と不等式が同時に出てくると急激にやる気がなくなる
逆に和と積を排除するか不等式を排除すれば急にやる気が出る
0550デフォルトの名無しさん2014/11/21(金) 12:49:45.94ID:4J6K1s1K
Haskellには定理証明機能ないの?Agda, Coq, Idrisに負けちゃうよ?いいの?
0551デフォルトの名無しさん2014/11/21(金) 13:22:07.76ID:biiemfBm
DSLと、汎用のプログラミング言語を比べられても困る
0552デフォルトの名無しさん2014/11/21(金) 13:43:15.79ID:QGA3g02X
よく分かってない奴ほど最強言語とか決めたがるよな
0553デフォルトの名無しさん2014/11/22(土) 09:41:48.24ID:Wm3XtvsR
関数プログラミング 珠玉のアルゴリズムデザイン
http://www.amazon.co.jp//dp/4274050645/

こんな本出てた。
と思ったらAmazonでベストセラー1位だった。
やっぱ良い本は売れるんだな。
0554デフォルトの名無しさん2014/11/22(土) 10:12:19.23ID:lvXbHvhc
>>553
その本、超難しいんですが何で売れてるんだ…
0555デフォルトの名無しさん2014/11/22(土) 10:21:54.20ID:M5wNKGmV
一位ってもカテゴリ内だからな、他の本が弱すぎるわ
https://www.amazon.co.jp/gp/bestsellers/books/3229701051/ref=zg_b_bs_3229701051_1
0556デフォルトの名無しさん2014/11/22(土) 13:42:11.78ID:WtWGM1SO
超難しい
大学三年以降の教科書レベル
0557デフォルトの名無しさん2014/11/22(土) 14:57:13.69ID:G2VJHv12
関数プログラミング 珠玉のアルゴリズムデザイン 2014/11/12
ベストセラー1位- カテゴリ 開発技法

関数プログラミング実践入門 2014/11/14
ベストセラー1位- カテゴリ ソフトウェア開発・言語

Haskellによる並列・並行プログラミング 2014/8/21
393位 ソフトウェア開発・言語
0558デフォルトの名無しさん2014/11/22(土) 14:57:23.06ID:vgJLKWkE
例えば静的型付けはプログラムを容易にするという期待があって
その期待を裏切る困難をぶつけるのは衒学的ではないと思う

そうではなく最初から難しいものを期待するのは衒学的といわれても仕方ない
0559デフォルトの名無しさん2014/11/22(土) 18:45:53.59ID:jhiCG8Ku
衒学的と何度も繰り返すのはとても衒学的なことだ
0560デフォルトの名無しさん2014/11/22(土) 19:22:56.26ID:RI7DMzoa
諸君、議論したまえ
0561デフォルトの名無しさん2014/11/22(土) 21:35:07.29ID:c/4FLN04
>>556
各章の問題提示の部分で、問題の記述をはしょりすぎな気がするから、大学の教科書としてはおすすめできない
0562デフォルトの名無しさん2014/11/24(月) 11:39:45.16ID:BpjrdalZ
各位、議論したまえ
0563sage2014/11/24(月) 14:49:02.32ID:7CKdvrmH
https://ja.wikipedia.org/wiki/%E3%83%A2%E3%83%8A%E3%83%89_(%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0)
完成できずに逝くと思う。すまんな俺は単に弱い一個人なんで。
学術資料読んでそれをまとめる専門の仕事にでもついていればよかったんだけどなぁ。
モジュラープログラミングの部分は誰か文体揃えて書いてくれ。
他もできたらやりたかったなぁ。
0564デフォルトの名無しさん2014/11/24(月) 14:51:03.00ID:7CKdvrmH
間違えたああこらもう全然だめだ。
0565デフォルトの名無しさん2014/11/24(月) 21:43:31.83ID:Xe8iqLdX
>>563
いい仕事じゃん。できれば生きろ。
0566デフォルトの名無しさん2014/11/24(月) 22:22:48.89ID:tcdjXDxE
前を向いて死ね
0567デフォルトの名無しさん2014/11/24(月) 22:23:53.07ID:7CKdvrmH
>>565
いい仕事だと言ってもらえると本当うれしい。
一人で意味不明の事をやっているようで、誰とも会話が成立してない気がして
一体なんのためにやっているのかもはやわからん。今まで一体何だったんだ。
0568デフォルトの名無しさん2014/11/24(月) 22:29:32.33ID:7CKdvrmH
>>566
なんでそこまで嫌われるのかわかんね。最初っからそうだもの。

モナドって何?って話だったからコツコツ調べてただけじゃないか。
もう本当に疲れた。
0569デフォルトの名無しさん2014/11/24(月) 22:50:48.59ID:BpjrdalZ
嫌ってないよ
0570デフォルトの名無しさん2014/11/24(月) 22:54:23.23ID:sEfL4Txj
難しいけど勉強になる。よく分かってないが何かの病気なのか?治るといいな。
0571デフォルトの名無しさん2014/11/24(月) 23:42:46.25ID:i55zEC9x
調べるのが難しいなら再発明した方が早い可能性が高い
難解さのおかげで再発明好きな人間が得をしているのだ
0572デフォルトの名無しさん2014/11/25(火) 07:43:21.45ID:kGwEZ9YH
>>568
Wikipedia の モナド の項目の執筆者降臨!

wikiの説明は専門的で学のない俺には難しかったので、ここで聞きたいんだけど、IOにおけるモナドって何?

計算の順序を保証する仕組み?
0573デフォルトの名無しさん2014/11/25(火) 13:31:19.23ID:2MCtjx8e
C++のテンプレートメタプログラミングは発明されたのではない。もともとそこに隠れてて、発見されたのだ
モナドも同じではないか。誰かが気づいた
0574デフォルトの名無しさん2014/11/25(火) 17:24:41.10ID:g14a4Dh3
もっじ
0575デフォルトの名無しさん2014/11/25(火) 17:56:55.18ID:gXyL+Cg0
モナドはバグだった!?
0576デフォルトの名無しさん2014/11/25(火) 18:32:02.19ID:dCk0wk27
type Block = IO ()
type Procedure a = a -> Block
newtype MyIO a = MyIO (Procedure (Procedure a))
instance Monad MyIO where ・・・

・型パラメータなしのIOを発見 ←Monadではない
・Procedureを発見 ←Monadではない
・型パラメータありのIOを発明 ←更にパラメータを増やせばIOと直接関係なくなる
というイメージ
MonadとIOの関係は元々どこかにあったのではなく意図的に作られたように思える
0577デフォルトの名無しさん2014/11/25(火) 20:20:52.85ID:f5oRhixH
>>572
入出力の計算効果をもつプログラムの合成規則
あとは入出力の計算効果をモジュール化するもの
0578デフォルトの名無しさん2014/11/26(水) 00:46:34.42ID:/hWk4Wyk
>>576
>>577
なるほど
勉強になります。この調子で頑張ってください
0579デフォルトの名無しさん2014/11/26(水) 00:50:21.55ID:/hWk4Wyk
歴史的には、当初IOはモナドじゃなかったんですね。
入出力は手続き、ってC言語とかが手続きだから鵜呑みにしてたけど、必然性があるか、って言われると…よく分からないですし。
0580名無しさん@お腹いっぱい。2014/11/26(水) 13:25:44.63ID:c7ypmrrn
こんにちは。数日前に関数プログラミングというのを知って
関数プログラミング実戦入門を買って今読んでるところです。
GHCiは見易いけどWinGHCiはコロンとかが見難いね。
0581デフォルトの名無しさん2014/11/26(水) 13:45:33.95ID:hgjm25EH
>>580
フォント変えればいいんじゃないか?
http://saltheads.blog134.fc2.com/blog-entry-79.html
0582デフォルトの名無しさん2014/11/26(水) 14:01:44.32ID:LAmOcxOu
>>539
U(0)=0
になってる?
0583デフォルトの名無しさん2014/11/26(水) 16:03:59.63ID:LAmOcxOu
ああそういやこの場合T(1)=0か
0584デフォルトの名無しさん2014/11/26(水) 19:07:19.41ID:OeXfM85D
 甘利明経済再生担当相が代表を務める自民党神奈川県第十三選挙区支部が二〇一三年、東京電力発注の送電線工事をめぐり談合したとして
公正取引委員会から独禁法違反(不当な取引制限)で課徴金納付を命じられた二社から、計二十四万円の寄付を受けていたことが二十六日、
県選挙管理委員会が公表した一三年の政治資金収支報告書で分かった。
 星野剛士前衆院議員が代表を務める自民党神奈川県第十二選挙区支部も、うち一社から十六万円の寄付を受けていた。
 公取委は遅くとも一二年二月からの二社の談合を認定。甘利氏の事務所は
取材を受けて談合を知ったとし「疑念を持たれないよう早急に返金したい」としている。二社によると、一二年から一四年分までの寄付は計六十五万円。
 星野氏の事務所は一三、一四年分の計四十万円を返還する方針。
 二社は横浜市の電気工事会社「共和テクノ」と同県藤沢市の「湘南送電工事」。
第十三選挙区支部への一三年の寄付は十二万円ずつ。第十二選挙区支部へは湘南送電工事からだった。
 公取委は一三年十二月、二社を含む計三十六社に計約七億四千万円の課徴金納付を命じた。共和テクノの課徴金は千百五十万円、湘南送電工事は千二十万円だった。
05855632014/11/26(水) 22:57:33.79ID:UAnZikAX
逝くとかバカなこと書いてすまん。自分を見失っていた。
みっともないことしてしまったよ。

モナドの神秘性というのはイコール計算効果の神秘性だと思う。
夢を見るのはすごいわかるけれど、突き詰めても結局モナドは
モジュラーなプログラミングをするための枠組みでしかない、と思う。
IOとかの計算(効果)って何?といわれるとやっぱりブラックボックス。
だから、モナドってなにといわれるとプログラムの『合成規則』でしかない。

もう書かんよ。じゃな。
0586デフォルトの名無しさん2014/11/26(水) 23:55:20.06ID:2c1qGuWp
wxHaskellのイベントの扱いがさっぱり理解できない……
UI.WX.Eventsにもともと無いやつはどうやって取ればいいんだ?
0587デフォルトの名無しさん2014/11/27(木) 00:07:56.35ID:ylWC3W0e
そうだ!
GLUTにしよう!
0588デフォルトの名無しさん2014/11/27(木) 12:38:11.55ID:hCEHi+eJ
UI.WX.Eventsのソースコード読んでそれを参考にwxcoreを使って自作すると最終的にwxc弄る破目になって投げたくなる
0589デフォルトの名無しさん2014/11/27(木) 13:49:57.85ID:IoChLXbu
UI.WX.WXCore.windowOnEventの引数のイベントハンドラって
Event () -> IO ()
とかいう型だけど,そうすると何のイベントなのかどうやって判定するの?
Event型と,EventMouseとかの型はどういう関係なのかわからん

そもそも根本的に何か勘違いしてるんだろうか?
0590デフォルトの名無しさん2014/11/27(木) 18:12:03.01ID:SL56IrD7
xmonad使ってるけどhaskellのことは全くわからぬ
0591デフォルトの名無しさん2014/11/27(木) 19:31:51.61ID:gCE9fwaW
イベントの仕組みはGUIに限定されるべきではないのに
ほぼGUI専門になってるから専門外のイベントを扱うのが難しいんだろう

X11の場合はXサーバーのソケットの扱い方が分かれば何でもできそうだが
0592デフォルトの名無しさん2014/11/27(木) 22:30:37.86ID:pLZ1757/
 東京電力は27日、福島第1原発2号機の使用済み燃料プールの冷却が停止したと発表した。
原因は調査中だが、制限値である65度に到達するまでに13日余りの時間的余裕があると説明している。

 東電によると、27日午後4時45分ごろ、2号機使用済み燃料プールの冷却に使われるポンプが自動停止した。
当時のプール水温は16.7度で冷却が停止した状態では毎時0.146度上昇するという。

 プールには使用済み燃料が587体、未使用燃料が28体保管されている。
冷却の復旧の見通しは立っていないが、これまでのところ放射線量の値などに大きな変動は確認されていない。 
0593デフォルトの名無しさん2014/11/29(土) 08:33:35.92ID:C97R8Ij+
福島第一プール冷却停止 原因が判明 誰かがスイッチを切っていただけ
0594デフォルトの名無しさん2014/11/29(土) 21:13:31.98ID:1Ssmpm6G
誰が切ったかは不明というオチか…
0595デフォルトの名無しさん2014/11/29(土) 21:29:34.63ID:JyKeLDr+
節電のため
0596デフォルトの名無しさん2014/11/29(土) 21:39:22.08ID:1Ssmpm6G
ウランが枯渇してるからな…
0597デフォルトの名無しさん2014/11/29(土) 21:58:28.40ID:pwVAqDB9
もう原発の話はいいよ‥どうせ10年後には放射能流出は止まると思うよ‥全部海に流れ出てね‥
0598デフォルトの名無しさん2014/11/30(日) 01:42:54.81ID:WqhK8rv7
>>553
>関数プログラミング 珠玉のアルゴリズムデザイン
>http://www.amazon.co.jp//dp/4274050645/

この本ほんと難しいな
もう三日でブックオフに売ってきた
0599デフォルトの名無しさん2014/11/30(日) 05:00:41.84ID:iVEYwzLz
そんなに読み応えがあるんやったら、わしが500円で買うたるど
0600デフォルトの名無しさん2014/11/30(日) 14:52:13.56ID:0H+5CMHi
そういう本は、「ここまでは理解できた」 「これが解れば先へ進める」
と足場を確認しながら、一歩一歩ゆっくり読んでいくもんだよ。
0601デフォルトの名無しさん2014/11/30(日) 14:55:24.38ID:0H+5CMHi
その前に、全体をパラパラめくってみて、進む道の先に何があるのかを確認しておくことも大事。
0602デフォルトの名無しさん2014/11/30(日) 14:58:24.15ID:u/yQuoTr
>>598
「理解できない」で売ることができるということに驚きだ
絶対に街中の店舗じゃうれないでしょう
もしかして、アマゾンとかも、そういうのを売ってるのかな
0603デフォルトの名無しさん2014/11/30(日) 16:32:51.63ID:nbrr+8dA
ブックオフも知らねえバカだか田舎モノだかがいるのか
新しめの本なら無条件で購入だよチンカス
0604デフォルトの名無しさん2014/11/30(日) 16:49:57.06ID:u/yQuoTr
ということは、やっぱりアマゾンとか普通の書店に売って、そこが新刊として売ってるんだろうな…
0605デフォルトの名無しさん2014/11/30(日) 17:12:13.35ID:nbrr+8dA
アルゴリズムイントロダクション 第3版 総合版 (世界標準MIT教科書)
http://www.amazon.co.jp/dp/476490408X/

別にいいけど「世界標準」ってドヤ顔しすぎというか、思い上がりすぎというか、もうちょっと謙譲の美徳はないのかアメリカ人、と思うよね。
0606デフォルトの名無しさん2014/11/30(日) 17:26:21.51ID:ag7vnAtW
何が世界標準かにもよるわな
MIT海外分校も使ってるって意味でないの
まあその場合MIT世界標準教科書になるだろうが
0607デフォルトの名無しさん2014/11/30(日) 17:36:09.24ID:0H+5CMHi
内容で判断すればいい。

さすが世界標準というだけあると思える内容なら認めざるをえんだろ。
本当にそんな内容なら、世界中のプログラマに知ってもらうために世界標準を謳うのは当然かと。
0608デフォルトの名無しさん2014/11/30(日) 18:24:35.73ID:oDSFI/T1
アメリカだと大学出版ってそれだけでかなりのネームバリューだし
0609デフォルトの名無しさん2014/11/30(日) 21:26:14.13ID:0mf1q8+q
原著の表紙に世界標準なんて文字書いてねーけどな。
0610デフォルトの名無しさん2014/11/30(日) 21:36:10.31ID:7xJZ8Eq5
原著では説明文に
「初版は、専門家が標準的な参考書として用いているものと同じくらい、
世界中の大学で教科書として採用されるようになった」
というような旨のことが書いてあるくらいだね
http://www.amazon.com/dp/0262533057
それをタイトルに持ってきちゃうのが日本の出版社のセンスというか
0611デフォルトの名無しさん2014/11/30(日) 21:44:07.23ID:pQ52TemY
珠玉は半ページ毎に宿題になるレベル
0612デフォルトの名無しさん2014/11/30(日) 21:59:04.97ID:MoGBaFHc
珠玉が売れてるの理解できない。難しすぎ。
どこかの大学でレクチャーノートとか出してないかな?
0613デフォルトの名無しさん2014/11/30(日) 22:04:26.94ID:CR+pCvU9
本を飾るのが趣味の人もいるんでしょう
0614デフォルトの名無しさん2014/11/30(日) 22:30:27.74ID:0H+5CMHi
>>612
理解できなくてやる気がなくなったんでなければ、
とりあえずここで質問してみたらどうだ?
0615デフォルトの名無しさん2014/12/01(月) 04:12:32.36ID:9e1Nt7cE
【原発の発電コスト】原発の電力、風力より高い 太陽光とも同レベル 米企業系調査機関が試算

新設の原発の発電コストは世界的には1キロワット時当たり平均14セント(約15円)で
太陽光発電とほぼ同レベル、陸上風力発電や高効率天然ガス発電の8.2セントに比べて
かなり高いとの試算を、エネルギー問題の調査機関として実績のある米国企業系
「ブルームバーグ・ニュー・エナジー・ファイナンス」(BNEF)が16日までにまとめた。

 東京電力福島第1原発事故後の安全規制強化もあって建設費や維持管理にかかる
人件費などが世界的に高騰していることが主な理由。再生可能エネルギーのコストの
低下が続く中、原子力の優位性が薄れていることを印象付ける結果となった。(共同)
0616デフォルトの名無しさん2014/12/01(月) 08:51:33.55ID:9e1Nt7cE
海洋汚染、収束せず 福島第一 本紙調査でセシウム検出 

東京電力福島第一原発至近の海で、本紙は放射能汚染の状況を調べ、専用港の出入り口などで海水に溶けた状態の放射性セシウムを検出した。
事故発生当初よりは格段に低い濃度だが、外洋への汚染が続く状況がはっきりした。
一方、東電は精度の低い海水測定をしていながら、「検出せず」を強調する。事故当事者としての責任を果たしているのかどうか疑問がある。
本紙は十月二十日、地元漁船をチャーターし、独協医科大学の木村真三准教授(放射線衛生学)と合同で原発周辺五カ所の海水と海底土(砂)を採取。
後日、同大の高性能のゲルマニウム半導体検出器を使い、それぞれ二十四時間、八時間かけ計測した。海水はろ過し、ちりなどに付着したセシウムは除去した。
結果は図の通りで、水、砂とも港の出入り口が最も濃度が高く、ここから拡散していることがうかがえる。
注目されるのは、同地点の海水から一リットル当たり一・〇七ベクレルのセシウムを検出したことだ。「一ベクレルの海水=食品基準の一〇〇ベクレルの魚が捕れる可能性」が一つの目安としてあり、決して無視できない汚染といえる。
東電は原子力規制委員会が定めた基準に沿って海水モニタリングをしているが、日々の公表資料は「検出せず」の記述が並ぶ。
計測時間はわずか十七分ほどで、一ベクレル前後の汚染はほとんど見逃すような精度しかない。大型魚用の網で小魚を捕ろうとするようなものだ。
東電の担当者は「国のモニタリング基準に沿っている」と強調する。
原子力規制委事務局の担当者は「高濃度汚染がないか監視するのが目的。迅速性が求められ、精度が低いとは思わない」としている。
しかし、かつての高い汚染時なら、精度が低くても捕捉できたが、現在のレベルなら、やり方を変えないと信頼できるデータは出ない。汚染が分からないようにしているのではないかとの疑念を招きかねない。
地元、相馬双葉漁協の高野一郎・請戸(うけど)支所長は「何度調べても汚染が検出されなければ、私たちも消費者も安心できる。しかし、国や東電がきちんと調べてくれないと、誰も信用できない」と語った。
0617デフォルトの名無しさん2014/12/01(月) 10:10:42.96ID:npZaGboV
ここには一流大学を上位の成績で出た頭のいいおじちゃん達が犇めいてるから誠意を持って質問すれば大抵の技術的問題は教えて貰えるよ
0618デフォルトの名無しさん2014/12/01(月) 11:21:30.52ID:7qewsS7c
何か気に入らないが何かは自分でもわからんって質問は勘弁な
0619デフォルトの名無しさん2014/12/01(月) 12:26:07.39ID:yyoCGOaQ
こっちは珠玉で手いっぱいだっつーのに、もうAdvent Calendar の季節が来ちゃったのかよ…
0620デフォルトの名無しさん2014/12/01(月) 18:18:46.70ID:9e1Nt7cE
自由化後も廃炉費転嫁 再生エネ契約者まで負担

経済産業省は二十九日、大手電力会社が老朽化した原発の廃炉に取り組むのを支援するため電力小売り全面自由化後も、すべての電力小売会社の電気料金に廃炉費用を転嫁する方向で検討に入った。
費用を確実に確保できる仕組みを整備することで、老朽原発の廃炉を着実に進めたい考え。
ただ新規参入の電力小売会社の契約者にも大手電力の廃炉費用を負担させるのは、公平な市場競争を阻害するとの反対意見も多い。
脱原発を志向して再生可能エネルギー専門の小売会社と契約する消費者からは反発も予想され、激しい議論になりそうだ。
大手電力はこれまで廃炉費用を電気料金の中で徴収してきた。二〇一六年四月に電力小売りが全面自由化されると料金競争が激しくなり、廃炉費用を料金に織り込みづらくなると予想される。
老朽原発は年々増えるため費用が確保できないと廃炉計画に遅れが出かねないと懸念されている。
一八〜二〇年には「発送電分離」で大手電力から送配電部門が切り離され別会社化される。
すべての電力小売会社が送配電会社に託送料を支払い契約者に電気を届けてもらう形になることから、託送料に廃炉費用を上乗せする案が検討されている。
この場合、全電力利用者が大手電力の廃炉費用を負担することになる。
一方、大手電力が原発の発電コストを表面上引き下げて再稼働を進めれば、新旧電力会社間での競争が成り立たない恐れがある。

<原発の廃炉費用> 新規制基準は原発の運転期間を原則40年とし、それ以上運転を継続する場合は特別な手続きを踏むことを定めた。
廃炉費用は小型原発で400億円前後、中型で500億円前後、大型で最大800億円台とされる。
電力会社は想定運転年数に基づいて費用を積み立てており、それより前に廃炉にすると積み立て不足が発生し、損失処理しなければならない。
経済産業省は、現在7基ある稼働40年前後の老朽原発の場合、平均210億円の損失が出ると試算している。
0621デフォルトの名無しさん2014/12/01(月) 18:23:35.69ID:9e1Nt7cE
時事ドットコム:ベルギー原発で火災発生、原子炉運転停止
https://archive.today/9k8K6

【ブリュッセルAFP=時事】ベルギー東部のティアンジュ原子力発電所で11月30日に火災が発生し、
原子炉1基が運転を停止した。同国メディアが報じた。同国で稼働が停止している原子炉はこれで4基目となった。
(写真はベルギー・ティアンジュにある電力会社エレクトラベルの原子力発電所)

リエージュ近郊にある原子力発電所のこの原子炉は、フランスのエネルギー大手GDFスエズ傘下の
ベルギー電力大手エレクトラベルが運用する原子炉7基のうちの1つだ。

同発電所に隣接する都市ユイのアレクシス・フーショー市長によると、今回の火災は「原子炉の区域外で発生した」という。

エレクトラベルは、ティアンジュ原発で発生した今回の火災は正午頃に鎮火したと発表。これまでのところ
「原発の安全性および原発職員と近隣住民の安全性への影響は全くない」としている。
予備調査では「人為的な破壊行為」の可能性も排除され、火災は「技術的な原因」で発生したとの結論が下された。

同国では8月、別の原発で原子炉が停止しているが、この原因については「人為的な破壊行為」あったためとされている。

アントワープとティアンジュにある別の原子炉2基も3月以降稼働を停止している。原子炉容器に
微小なひびが発見されたためだ。この2基は2012年6月〜2013年6月の1年間にも稼働を停止していた。

ベルギーは電力の約55%を原子力発電に依存している。
0622デフォルトの名無しさん2014/12/02(火) 13:17:59.60ID:nkmei8Ed
質問。そもそもStoreコモナドって何の役にたつの?
0623デフォルトの名無しさん2014/12/02(火) 18:15:45.21ID:DCIQUKBh
行指向のデータを標準入力から読み込み
時間毎に別のファイルに出力するような関数はどのように書けば良いでしょうか。

例えば以下のようなタイミングでデータが到着するとします。

1秒目: a(改行)b(改行)c
2秒目: d(改行)e(改行)

このデータを1秒毎に出力すると以下のようなファイルが2つできます
ファイル.1秒目:
> a
> b

ファイル.2秒目
> cd
> e

宜しくお願いします
0624デフォルトの名無しさん2014/12/03(水) 22:57:56.86ID:CqBm4LFv
>>623
仮に、[(入力時の時間, 一行文字列)] というリストがあれば、
これを秒数でグループ分け(group)したリストに対して
ファイル出力関数を mapM_ すればいい。

で、このリストをどうやって作るかだが、リアルタイムではなく、
全てのデータの入力を待ってから一気にファイル出力するのなら、
一行読み取る処理と現在時刻を求める処理をループで回せばいい。
(ループで回すというのは、再帰でも何でもいいから、とにかく繰り返すこと)

リアルタイムでやるのなら、unsafeInterleaveIO を使って作ればいい。
使い方はググれば結構出てくるから、とりあえず概略だけ言うと、

f : IO [ (入力時の時間, 一行文字列)]
f = unsafeInterleaveIO $ do
d@(入力時の時間, 一行文字列) <- 読み取り関数
if 終了? then (return []) else (return $ d : f)

という感じの関数 f を作ればいい。
後は、初めに言った group と mapM_ をすれば、遅延評価の働きで、
自動的に一秒毎にファイル出力されるはず。
0625デフォルトの名無しさん2014/12/03(水) 23:04:20.60ID:CqBm4LFv
>>624
すまん、修正(これ、よく忘れるんだ)。

> if 終了? then (return []) else (return $ d : f)

ds <- f
if 終了? then (return []) else (return $ d : ds)
0626デフォルトの名無しさん2014/12/04(木) 05:03:48.38ID:Iv5sqMt5
emacsで自動補完どうすればいいですか?
0627デフォルトの名無しさん2014/12/04(木) 08:01:22.79ID:LoTVeS2f
■避難指示したときより高い基準で国は帰宅させようとしている
「解除なんて、とんでもありません。指定地点の集まる市内西部は、全地域が飯舘村に近い所。
まだまだ線量が高く、地表が毎時10μ(マイクロ)Svを超える場所さえあるのです。
もし指定が解除されれば、賠償は3ヵ月後に打ち切られ、避難している住民も家に戻らざるを得なくなる。
危険に身をさらすことになってしまうのです」

しかも、国は今回の解除の基準を、避難させたときよりも高く設定しているのだという。
「勧奨地点に指定したときの空間線量率は毎時3・22μSvから3μSvの間でした。
ところが、今度の解除はそれより高い毎時3.8μSvを基準にするというのです。
18歳以下の子供か妊婦がいる世帯は、地上50pで毎時2μSv以上なら避難させるなど、
より厳しい基準を適用していたのに、それが毎時3.8μSvで解除。こんなばかな話があるでしょうか」

■自宅から300m地点にプルトニウムが!
原町区大原地区にある佐藤信一さん宅。勧奨地点の指定世帯だ。玄関横に置かれた庭石に
測定器を近づけると、いきなり3000cpmカウント・パー・ミニッツを超える表面汚染が見つかった。
この数値はどのくらい高いのか?

原発施設などに設けられる放射線管理区域では、法律によって1000cpmを超えるものは
汚染されていると判断され、外部に持ち出せない。原発事故の影響がなければ100cpm前後が普通だ。
つまり、庭石は約30倍も汚染されていることになる。

前出の小澤氏が言う。
「アルファ核種でなおかつ半減期が2万4000年と非常に長いプルトニウムが、勧奨地点付近の
土壌に沈着していることは文科省の調査でもはっきりしました。畑仕事などで空中に舞い上がったものを
吸い込んでしまえば、健康リスクは非常に大きい。国は何も対策をしていない、そんな場所に
住民を戻そうとしているのです」
0628デフォルトの名無しさん2014/12/04(木) 10:57:59.22ID:T99TOUWB
>>626
ghc-modを入れるがよろし
0629デフォルトの名無しさん2014/12/04(木) 18:44:02.35ID:Iv5sqMt5
↑ありがとうございます
 よろしければ設定方法使い方などのサイト教えていただけますか?
0630デフォルトの名無しさん2014/12/04(木) 18:48:09.76ID:T99TOUWB
>>629
http://www.mew.org/~kazu/proj/ghc-mod/en/
0631デフォルトの名無しさん2014/12/04(木) 18:57:59.58ID:Iv5sqMt5
↑ありがとうございまた
0632デフォルトの名無しさん2014/12/06(土) 19:42:37.72ID:L7gHuoOO
以下のようなXに対して f を介して引数を与える場面で
同じ記述を繰り返し記述することになって格好悪いのですが
なんとかならないものでしょうかという相談です。

import Data.Char (chr)
data X = X A B C D deriving Show
newtype A = A Int deriving Show
newtype B = B String deriving Show
newtype C = C Char deriving Show
newtype D = D Double deriving Show
class F a where f :: Int -> a
instance F A where f = A
instance F B where f = B . show
instance F C where f = C . chr
instance F D where f = D . fromIntegral

> X (f 43) (f 43) (f 43) (f 43)
X (A 43) (B "43") (C '+') (D 43.0)
0633デフォルトの名無しさん2014/12/07(日) 00:51:50.27ID:dvw2SVo4
>>632
43は固定? つまり A に42 でBに43を入れるってケースがある?
0634デフォルトの名無しさん2014/12/07(日) 08:01:52.92ID:2Fitxl5E
43は固定パラメタです
(f 43)が繰り返し何度も書かないといけないのがいやなんです
0635デフォルトの名無しさん2014/12/07(日) 08:32:19.11ID:NSa/mr83
mkX みたいな補助関数書くのじゃダメ?
06366232014/12/07(日) 09:30:06.65ID:8Uy+pRF4
>>625
ありがとうございます。unsafeInterleaveIOは面白い関数ですね。

ただ、今回は到着したデータを直ちに出力をしなければなりません。
groupByによる出力をする作りだと、
次のレコードが到着するまで最終的な出力がされません。
たとえば、以下のようなタイミングでデータが到着するとします。
>1秒目: a(改行)b(改行)c
>3秒目: d(改行)e(改行)

groupByを使った作りの場合、ファイル.1秒目にデータが出力されるタイミングは
3秒目の最初の改行が届いた後になってしまいます。
2秒目になった後に直ちに書き込みをしたいとおもっています。



今は色々調べていたらtimeout関数という物を見つけたので、
こいつを参考に書いてみれば良いのかと思い試行錯誤しています。
他に何かあったらよろしくお願いします。
0637デフォルトの名無しさん2014/12/07(日) 09:47:59.50ID:/I0z9RQF
hSetBuffing で NoBuffering にしてないだけだったりして
0638デフォルトの名無しさん2014/12/07(日) 09:50:25.29ID:/I0z9RQF
hSetBuffing→hSetBuffering すまぬ
06396242014/12/07(日) 13:10:39.04ID:on+n1Q0B
>>636
それなら、秒数でグループ分けするのではなく、次のように、
n 番目の要素と n-1 番目の要素でグループ分けすればいい。

as, bs : [a]
bs = zip as (tail as )

このリストに対して、1要素得られる毎に出力する。
ただし、秒数の境界を跨いでいなければ追加書き込みで、
跨いでれば前回のファイルハンドルは閉じて新たに開く。
この判断はタプルの2つの要素を比較すればできる。

まぁ、これだと2秒目になってから1秒目のファイルを出力するのではなく、
改行ごとに(追加書き込みで)出力することになるが、これではダメか?
06406242014/12/07(日) 13:17:57.83ID:on+n1Q0B
>>639
ごめん、ちょっとおかしかったな。

跨いでいなければ追加書き込みモードでファイルを開き、
跨いでいれば書き込みモードでファイルを開く、だ。

もちろん、前回開いたファイルを閉じずにハンドルを使い回してもいい。
0641デフォルトの名無しさん2014/12/07(日) 16:55:12.67ID:dvw2SVo4
>>634
ならReaderアプリカティブを利用して、

instance F X where f = X <$> f <*> f <*> f <*> f

-- > (f 43 :: X)
-- X (A 43) (B "43") (C '+') (D 43.0)

ではいかが
0642デフォルトの名無しさん2014/12/07(日) 18:45:18.88ID:2Fitxl5E
>>641
そのやり方で進めてみます、ありがとうございました
0643デフォルトの名無しさん2014/12/07(日) 23:29:45.14ID:maUG8wVr
東京電力福島第1原発3号機で、使用済み核燃料プールのある原子炉建屋最上階の除染が難航している。
東電は来年度前半に燃料取り出しに着手する計画だが、除染開始から1年以上が経過しても
大部分の場所で放射線量毎時1ミリシーベルトという目標値を達成できておらず、
プールからの燃料取り出しの見通しが立たない状態だ。廃炉作業が一層遅れる懸念が高まっている。

福島第1原発事故では、1〜3号機で炉心溶融が起きた。3号機では、遠隔操作の重機を使うことによって
最上階のがれき撤去が始まり、1、2号機に比べて作業が進んでいる。今後予定されている燃料の取り出しでは、
遠隔操作クレーンの設置や、トラブルが起こった場合の修理のため、作業員が建屋最上階に立ち入る必要がある。

このため東電は、昨年10月から最上階の除染作業を開始。当初の線量は高い所で毎時100ミリシーベルトを超えていたため、
除染後の線量の目標値を同1ミリシーベルトと決めた。しかし、遠隔操作ロボットを使って壁や床に高圧の水を吹きつけ、
表面を削って吸引したものの、先月末に公表した線量は最大で毎時約60ミリシーベルトもあり、ほとんどの場所で目標値を達成できていなかった。

東電は、汚染が想定以上に床や壁に深く浸透していることが原因とみている。今後、鉄板を置いて放射線を遮り、
それでも線量の高い場所は床面を削るなどの追加除染を実施する計画だが、東電は「作業員の安全のためには線量低減対策が不可欠。
追加除染による工程への影響は分からない」と説明している。

政府と東電は、3号機の廃炉工程を来年3月に見直す方針だが、除染の状況によっては、工程が遅れる可能性がある。

3号機以外でも、1号機は放射性物質飛散防止対策のため、建屋最上階のがれき撤去を中断。
燃料取り出し開始は当初の工程表から2年遅れて2019年度以降になることが既に決まった。
また、2号機は放射線量が最も高く、建屋の除染作業の見通しが立たない。
0644デフォルトの名無しさん2014/12/11(木) 18:22:20.70ID:3EykmgOV
「250ミリ」軸に検討=原発緊急事態の被ばく限度−規制委
http://www.jiji.com/jc/eqa?k=2014121000439&;m=rss

 原子力規制委員会は10日、原発で重大事故などの緊急事態が発生した際に、
現在100ミリシーベルトとされている作業員の被ばく線量上限値を引き上げる検討を始めた。
田中俊一委員長は「東京電力福島第1原発事故では、250ミリシーベルトに一度決めたこともあるので、
この辺りをベースに検討したらどうか」と述べた。
 福島第1原発事故の際は、通常の線量限度では対応が不可能だとして急きょ250ミリシーベルトに引き上げられた経緯がある。
更田豊志委員は「(上限の)数字については申し上げないが、ばたばたと変えないのが大事。ばたばた変えると、
事前の教育や訓練、準備がないのに(従事する作業員に)意思決定を迫ることになる」と指摘した。(2014/12/10-13:06)
0645デフォルトの名無しさん2014/12/11(木) 23:30:02.29ID:kRBtX0Xr
Applicative ファンクタやContravariantをぺろぺろしている俺が、Ekmettのライブラリを読み解く為に、圏論を勉強しようと思います。何をすべきか教えてくらさい
0646デフォルトの名無しさん2014/12/11(木) 23:40:23.48ID:mbz3wuYK
 

            Gun = Kata
0647デフォルトの名無しさん2014/12/12(金) 00:12:15.79ID:zdalzzQ9
>>646
ワロタw
0648デフォルトの名無しさん2014/12/12(金) 06:40:32.94ID:q8fYIXm6
定番はawodayの青い本かな
あと勉強会みたいなのに参加して先生を確保する
0649デフォルトの名無しさん2014/12/12(金) 06:54:06.33ID:aTgx+BUM
>>648
サンクス!
自分でも検索しました。
プログラマのための圏論の基礎が読みやすかったが、一向に続きが出ない模様。
WikibooksのHaskell/圏論も良かったが短い。

いま、哲学者のための圏論を読んでます。

勉強会は盲点でした。探してみます。
紹介してくれた本は.... ううむ、やっぱり英語ですか。
(できれば... 日本語で読みたいのですが....)
0650デフォルトの名無しさん2014/12/12(金) 08:20:25.94ID:wGOQGqb9
年末は圏論の勉強が捗るゾイ!
(´;ω;`)ウッ…
0651デフォルトの名無しさん2014/12/12(金) 09:05:17.89ID:RkQvbcXU
初学者(自分も含めて)が「何かいい本ないかな」って探すの見ると、
今の「電子書籍」って未だ、電子って付けるレベルじゃないと妄想。
せめて、読者の関心とか理解度に応じて、表示内容がダイナミックに変わってくれないもんかな。
例えば、QuickCheckを真似て、読者の理解の抜けているところや勘違いを自動的に見つけ出して、説明に付け加えてくれる、とか。
イメージは、ホテルフロントのコンシェルジェに近い。
0652デフォルトの名無しさん2014/12/12(金) 09:12:22.36ID:wGOQGqb9
章末に理解度チェックする課題がないと無理なんじゃね?
大学の教材にはフツーにあるし、分からなかったら先生に聴きにこいってビジネスモデルが完結してる。
経営ピンチのベネッセに、「Kindle赤ペン先生」システムを提案しよう。
0653デフォルトの名無しさん2014/12/12(金) 11:47:50.34ID:RdOFT8ml
もはや普通の意味での「書籍」ではないな
0654デフォルトの名無しさん2014/12/12(金) 17:27:41.79ID:aTgx+BUM
おい話逸れてんよw
でもまあいいか。

iOSの電子書籍は更新版を配信できるから、間違いが見つかった時点で即訂正してくれるのが嬉しい。

あと、簡易コンパイラを同梱して、練習しながら学べるってのはどうだ?
ていうか
0655デフォルトの名無しさん2014/12/12(金) 17:35:42.59ID:aTgx+BUM
『Haskellプログラマのための圏論入門』だとおおお!!!!

…ってなるからさ、ただのPDFでいいから書いてくんね?
100p 3000円でも買うぞ。

販売は、Gumroad使えばPDFアップするだけでいいし、利益はほぼ95%だぜ。
0656デフォルトの名無しさん2014/12/12(金) 21:02:59.08ID:3LqsDs/x
>>655
そういう本を求める段階の人は、Haskell という特殊な題材で学ぶよりも、
より一般的な集合を題材にした普通の圏論本本で既存をしっかり学んだ方が良いのでは?
0657デフォルトの名無しさん2014/12/12(金) 22:18:01.01ID:hMGpOhKf
哲学科の人は圏論を学ぶためにHaskellを使ってるんだっけ?
0658デフォルトの名無しさん2014/12/13(土) 00:21:09.05ID:tEksvX6X
FP complete はブラウザ上で動作するIDEもついていて試しながら学べるよい教材がてんこ盛りだとおもう。英語だけど
https://www.fpcomplete.com/user/bartosz/lenses-stores-and-yoneda
0659デフォルトの名無しさん2014/12/13(土) 00:22:52.55ID:wR22PMmy
>>658
0660デフォルトの名無しさん2014/12/13(土) 00:26:21.40ID:/wm7pCNP
米田の補題をHaskellで学べるとは…
0661デフォルトの名無しさん2014/12/13(土) 00:35:10.93ID:Iq5cIN4q
関数プログラミング実践入門 ──簡潔で、正しいコードを書くために
大川 徳之
http://www.amazon.co.jp/dp/4774169269/

この本もHaskell本らしいけど、みんなの評価はどうなの?
Amazonのユーザーレビューだと星5つだが。
0662デフォルトの名無しさん2014/12/13(土) 09:34:01.31ID:fh3kpS8B
哲学科の学生はHaskellを使いこなすのか…、手強いな
0663デフォルトの名無しさん2014/12/13(土) 09:37:57.92ID:euN2qeLT
数学と哲学は近いってばっちゃが言ってた
0664デフォルトの名無しさん2014/12/13(土) 10:30:07.56ID:xi8pVI25
>>662
哲学者や数学者の書いた論文をそのまま読むよりは、
Haskellの教科書を読みながら試行錯誤していった方が絶対楽なはず。

Dartmas BASICとかLOGOなんかは元から概念の理解を助けるために作られたっぽい。
0665デフォルトの名無しさん2014/12/13(土) 10:48:12.32ID:U8eX8arB
それは、その Haskell の教科書を書いた連中が、哲学者か数学者であれば成立する命題にしかすぎない
そしてその命題が真である確率は、はっきりいって低い
0666デフォルトの名無しさん2014/12/13(土) 10:58:20.64ID:LIw9v9HC
HaskellとCoqの違いが分からん
圏論を学ぶためにHaskellを使う理由とCoqを使わない理由はなんなの
0667名無しさん@そうだ選挙に行こう2014/12/13(土) 12:30:19.48ID:tEksvX6X
課題:以下の前提から「圏論を学ぶ哲学者はCoqを使うべき」の導出せよ。
- Haskellを使いこなすのに圏論の知識があると捗る。
- 圏論を応用したHaskellを使う哲学者が存在する。
- HaskellとCoqには圏論を学ぶ上での相違がない。(要出典)
0668名無しさん@そうだ選挙に行こう2014/12/13(土) 12:51:37.91ID:LIw9v9HC
>>667
それは哲学ではない
その問いは思考を促すのではなく停止させるから
0669名無しさん@そうだ選挙に行こう2014/12/13(土) 13:38:12.68ID:wH93cn7f
TotalMap というものについて質問です。

これは、ドメインとなるキー型のすべての値について
コドメインとなる型の値との対応が予め定義された Map である、
という認識で良いでしょうか?
0670名無しさん@そうだ選挙に行こう2014/12/13(土) 14:21:46.00ID:h3jbayEp
モナドが自己関手の(ryみたいな証明をする際にuniversal polymorphismが要るけどそんなもんはないみたいな問題が昔のCoqにはあったけど
今のバージョンだと問題なくそういう証明もかけるみたい
でも図式で証明するのに比べて物凄い面倒だから練習問題を添削してもらう環境が無い時に自分の答えを検算するみたいな用途でもない限りお勧めできない
0671名無しさん@そうだ選挙に行こう2014/12/13(土) 14:59:17.77ID:LIw9v9HC
「型クラス論」とか「図式論」ではなく圏論になったのはなぜだろう
0672名無しさん@そうだ選挙に行こう2014/12/13(土) 17:52:25.71ID:/wm7pCNP
>>671
圏論の方が抽象度が高いから
0673名無しさん@そうだ選挙に行こう2014/12/14(日) 10:28:59.95ID:PzKlrdab
図式はドメインとかをゴチャゴチャ書き込まなければ抽象度高いよ
あの等式は値が等しいと言ってるだけなんだから型はどうでもいい

型を書かない図式
等式 (モナド則みたいなやつ) を書かない型クラス
両者を継承する圏論
と考えれば抽象度は逆転できる
0674デフォルトの名無しさん2014/12/15(月) 21:02:58.86ID:KtyxPG0q
圏論で何をするわけでもない。別にいらないだろう。
0675デフォルトの名無しさん2014/12/15(月) 21:36:53.00ID:/4FvCJJ7
>>674
圏論じゃなければダメというわけではないが、何を計算できないかを証明するには必要
特に自動プログラミングや、他言語からのトランスレータの設計で必要
0676デフォルトの名無しさん2014/12/15(月) 21:40:35.98ID:6IIqDdgA
ろけんろーん
0677デフォルトの名無しさん2014/12/15(月) 22:04:13.49ID:1DBfl/l3
>>675
逆に言えば、そういう限られた狭い分野にしか今のところ活かせないということだから、
圏論って大半のHaskellプログラマにとっては大した意味のない理論なんじゃね?
0678デフォルトの名無しさん2014/12/15(月) 22:05:28.79ID:73DNumLs
そうだよ
0679デフォルトの名無しさん2014/12/15(月) 22:09:34.09ID:U6CA+1sN
「SQLは集合論や群論をベースとしている」とか言われても笑止千万なんですが、Haskellと圏論の関係もそんな感じですか?
0680デフォルトの名無しさん2014/12/15(月) 22:14:00.57ID:R+znZwiG
SQLに集合論の用語が出てくる余地はないけど
型理論は普通にやっててもそれなりに出てくるからなあ
Javaプログラマでも反変と共変くらいは聞いたことあるだろん
0681デフォルトの名無しさん2014/12/15(月) 22:16:26.43ID:/4FvCJJ7
>>680
SQLは、論文書くときにSQLじゃなくて関係代数で表現するときに集合論の言葉が出てくる
あと、SQLを使う機械学習でも当然のように集合論の話が出てくる
0682デフォルトの名無しさん2014/12/15(月) 22:22:02.64ID:/4FvCJJ7
>>677
計算可能性はプログラミング論全部の根底にかかわる広く深い話です
0683デフォルトの名無しさん2014/12/15(月) 22:23:26.31ID:U6CA+1sN
>>680
covariant return typeしか知らん。
反変ってなんだっけ?
0684デフォルトの名無しさん2014/12/15(月) 22:40:10.79ID:KtyxPG0q
>>682
計算可能性と圏論がそんなに関係あるとは思えん。
強モナドを使って数学的になにか導出できるものなのか?

反変はcontravariantだな。
0685デフォルトの名無しさん2014/12/15(月) 22:50:45.21ID:/4FvCJJ7
>>684
計算可能性を圏論で表現すると、定理をHaskellでデモできる
0686デフォルトの名無しさん2014/12/15(月) 23:07:12.43ID:Lw/L1HxZ
圏論強者が続々登場ですね。

あなた方はどんな教科書で圏論に入門したんですか?
参考にしたいです。
0687デフォルトの名無しさん2014/12/15(月) 23:13:27.90ID:/4FvCJJ7
 

            Gun = Kata
0688デフォルトの名無しさん2014/12/15(月) 23:19:05.36ID:S/rsk+4o
SQLってモロ集合論じゃん
0689デフォルトの名無しさん2014/12/15(月) 23:20:27.94ID:KtyxPG0q
>>685
定理を自動証明できるというので便利なのって、ものすごく分岐があったりして
複雑なプログラムの正当性を対外的に主張したいとかそんな時とかなんじゃない
どういう問題解決のツールなのか具体的にわからないんだよな
あと普通に興味なのだけど定理証明系って就職先あるもんなの?

圏論入門は自分で本選ばないと。合わない本を薦めても合わない人には合わないから。
0690デフォルトの名無しさん2014/12/15(月) 23:23:46.56ID:U6CA+1sN
>>688
集合論の「成果」が反映されているとか書いてるサイトがあって、そういうのは笑止千万だと思う。
ただのベン図とか直積といったレベルなんだもん。
0691デフォルトの名無しさん2014/12/15(月) 23:28:56.39ID:Lw/L1HxZ
>>687
ワロタw
0692デフォルトの名無しさん2014/12/15(月) 23:33:45.57ID:/4FvCJJ7
>>690
スコーレムの定理は自明でない集合論の成果といってもよいけどね
ビッグデータが流行ってるから、関係DBで実装したシステムの、ツォルンの補題や構造論を駆使した論文が量産されるのではないかとにらんでいる
0693デフォルトの名無しさん2014/12/15(月) 23:35:45.77ID:Lw/L1HxZ
>圏論入門は自分で本選ばないと。合わない本を薦めても合わない人には合わないから。

そんなもんすか…
定義はサクッと短く終わらせて具体例で学べるのが好みかも。
0694デフォルトの名無しさん2014/12/15(月) 23:43:09.31ID:KtyxPG0q
>>693
その具体例が興味無いもんだったら全然頭に入らんから。
米田の補題やりたいんだったらホモロジーとかやんないといけないし。
そもそも自分もなんでHaskellでこんな圏論、圏論言ってるのかよくわからん。
0695デフォルトの名無しさん2014/12/15(月) 23:46:42.93ID:KtyxPG0q
Haskellで求められているのって圏論じゃなくて
どっちかというとカリー・ハワード同型対応とかじゃない。
結局、数理論理学やりたいんでしょ。
0696デフォルトの名無しさん2014/12/15(月) 23:55:37.92ID:Lw/L1HxZ
>>694
> Haskell で圏論
他の人はわかんないですけど、例えばlensライブラリに関する記事が流れてきて、
http://patternsinfp.wordpress.com/2011/01/31/lenses-are-the-coalgebras-for-the-costate-comonad/

で、coalgebraってなんだよ、って思ってwikiでググると
http://ja.m.wikipedia.org/wiki/余代数
なんか圏論? 図式? とかあって読めない。

そういう経験が最近多いので、勉強したいなーと。
0697デフォルトの名無しさん2014/12/16(火) 00:15:08.87ID:p2mzIHwl
図式をやたらつかって説明しているのは言っちゃ悪いがあんま中身わかってないんだよ。
言葉でうまく説明できないから図式多用して説明してることにしてんの。
そこらへん適当に見抜いて適切な文献にたどり着くようにしないと。
余代数は正直あんまり知らんがPeter Aczelって偉い先生とか調べていくとわかるかもしらん。
0698デフォルトの名無しさん2014/12/16(火) 00:35:30.17ID:zveiWEB1
>>695
その通り
関手が無数にある圏論をやる前に
数種類の関手だけで何とかならないか考えればいいのに考えない人が多い
0699デフォルトの名無しさん2014/12/16(火) 01:10:40.18ID:p2mzIHwl
>>699
具体的な役立つ例みたいなのを実際作れればいんだろうな。
0700デフォルトの名無しさん2014/12/16(火) 02:20:01.93ID:AnZisIOt
>>694
計算というモノを圏論の言葉でArrowやモナドまで抽象化してコードできれいに表現できるようにしたのがHaskellなんです
例えば、ラムダ計算を駆使しても同程度の抽象化は可能だと思いますが、普遍性を提示する段になると、やはり圏論に軍配があがるでしょうね
0701デフォルトの名無しさん2014/12/16(火) 03:03:28.41ID:FzXuRTWx
なるほどー。勉強になります。
0702デフォルトの名無しさん2014/12/16(火) 07:34:48.98ID:EXe/x8vu
>>682
それは分かるが、じゃあ実際にHaskellでアプリケーションを作るときに、
その計算可能性の理論を含む圏論はどの程度、どう関わってくるのかが見えてこない。

たとえば、Haskellでゲームを作るとき、年賀状作成アプリを作るとき、
Webストアサイトを作るとき、会計ソフトを作るとき、Office系アプリを作るとき、
Raw現像アプリを作るとき、VFX作成アプリを作るとき、PDF編集アプリを作るとき、
流体シミュレーションをしたり、破壊シミュレーションをしたり、ライフログを管理したり・・・

といったいろんなジャンルのものを作るときに、圏論はアプリを設計し易くしたり、
コードを簡潔にしたり、処理速度や使用リソース量を改善したり、メンテし易くしたり、
といった効果にどのように繋がるのかが分からない。
とりあえず、自動プログラミングやトランスレータで必須なのは >>675 で聞いた(理由は分からん)。
0703デフォルトの名無しさん2014/12/16(火) 15:09:40.38ID:ZzGZKbIY
つまりソースで実例がほしいわけだ
かなり具体的な例でないと納得しそうもないね
0704デフォルトの名無しさん2014/12/16(火) 15:12:15.44ID:ZzGZKbIY
ていうか>>678で結論出てるじゃん
0705デフォルトの名無しさん2014/12/16(火) 20:56:00.31ID:EXe/x8vu
>>703
たとえば、こういうアプリを作っててこういう問題を抱えている場合、
圏論を知らん奴はこう対処するが、知ってる奴はこうやって解決する。
後者の方がメンテし易いでしょ、速いでしょ、簡潔でしょ、etc

みたいな話くらいはここでもできそうかと思って。

ただ、そういう話も無いとなると、じゃあ Haskell プログラマにとって
圏論とはどういった存在なのか? 実用には結びつかないのか? という話になる。

特に >>655 みたいな人たちは圏論に何を期待してるのだろう。
07066552014/12/16(火) 21:43:49.08ID:FzXuRTWx
メンテしやすくなるとか、速くなるとか、簡潔にかけるとか、あなたの質問したことの答えを期待しています。
0707デフォルトの名無しさん2014/12/16(火) 23:37:50.03ID:QTuBt/rO
>>702
Haskellは論文を作るプログラミング言語です
0708デフォルトの名無しさん2014/12/16(火) 23:39:44.12ID:zveiWEB1
>>705
HaskellやC++の全てのアプリはtemplateつまり型コンストラクタの問題を抱えている
圏論を知らん奴はFunctorを過小評価するが知ってるやつは過大評価する
後者の方がメタプログラミングのコードを読むのが速い (書くとは言っていない)
0709デフォルトの名無しさん2014/12/17(水) 00:01:41.57ID:p2mzIHwl
圏を成すっていうことは、モジュールを形成するっつーことだ。
Cって圏とDって圏があったとする。それはどういうことかというと
バッティングしないモジュールが2つあるってことだ。
その「バッティングしない」という主張を支えているのが「圏を成す」という
数学的証明可能な主張だ。
何言っているのかわからないかもしれないが、わかってしまえば馬鹿みたいなことだ。

つまり、構造化プログラミングの時代から結局ソフトウェアの製作の基本は分割統治だということだ。
証明にしたって、いきなり長大な定理証明するよりも分割した小さい定理から証明する方が楽だろ。
0710デフォルトの名無しさん2014/12/17(水) 00:40:33.61ID:16FYUzco
本日のにわかスレ
0711デフォルトの名無しさん2014/12/17(水) 00:43:00.13ID:16FYUzco
今のHaskellは圏論的な考え方を十分に活かせる言語じゃない。
coqとかも同様だと思う。
(ちょっとも活かせないし、有用じゃないとかいう意味じゃないよ)
0712デフォルトの名無しさん2014/12/17(水) 00:46:51.45ID:JUumI3zm
>>702
「見えてこない」のは当たり前で、期待するような
現実世界の実用的なアプリケーション開発に適用できるほど、
(Haskell に代表される)純粋関数型言語によるプログラミング技術、
いわゆる「関数プログラミング」は成熟していないのが現実

そもそも圏論のプログラミングへの応用も始まったばかり
しかも Haskell のアローやモナドは、圏論という概念ではほんの一部でしかない
逆の見方をすると、10年先20年先という時間感覚で
挑戦しがいのある分野の一つが「関数プログラミング」だと思う
0713デフォルトの名無しさん2014/12/17(水) 05:48:06.03ID:eMZNlnHK
Haskell は Rust に負けてまうん?(´・_・`)
0714デフォルトの名無しさん2014/12/17(水) 12:33:52.95ID:2wTiOnxF
>>712
ということは、>>706 のような人たちは今ではなく
10年後20年後を見据えて圏論の勉強をしようとしているのか。

その時に大幅に置いていかれないように、俺もぼちぼちがんばるわ。
0715デフォルトの名無しさん2014/12/17(水) 13:33:40.74ID:9XkD0r5R
依存関係回避方法お勧めありますか?
0716デフォルトの名無しさん2014/12/17(水) 14:08:49.35ID:/b4BEh/V
依存地獄問題は未だ根本的解決の日を見ていない
現況では我々は幼児の如く砂場遊びに逃げ込むしかないのだ
0717デフォルトの名無しさん2014/12/17(水) 16:20:21.89ID:xwihDn+F
Haskell - モナド入門以前 - Qiita
http://qiita.com/ruicc/items/6ba44359d86c3bf84492
0718デフォルトの名無しさん2014/12/17(水) 18:16:25.49ID:fgSxRbXW
標準入出力かネットワークに依存する
GUIに依存しない
これだけで解決
0719デフォルトの名無しさん2014/12/18(木) 01:01:24.51ID:KNlUpaPW
福島第1原発で汚染水の放射性物質を大幅に減らす浄化装置「ALPS」で処理した水が設置作業中の配管から漏えいしていた…漏えい量は最大約6トン
0720デフォルトの名無しさん2014/12/18(木) 07:16:51.01ID:CMXXyuKT
Conal Elliottさんのブログを楽しく読めるくらいに表示的意味論を知っておきたい
学べるサイトか本かないかな?
0721デフォルトの名無しさん2014/12/18(木) 07:35:36.06ID:P6rnp9ki
>>720
俺も気になってる。
取り敢えずこれ読んでる。
http://ja.m.wikibooks.org/wiki/Haskell/Denotational_semantics
0722デフォルトの名無しさん2014/12/18(木) 08:29:43.98ID:4fvp5mcc
すごい!わかりやすい
0723デフォルトの名無しさん2014/12/18(木) 10:11:44.66ID:hLMpD6vB
すごい表示的意味論楽しく学ぼう!
0724デフォルトの名無しさん2014/12/18(木) 16:58:48.33ID:uP2HGx71
cabalでpandocをインストールしたのですが、ghc-modをインストールしようとしたら出来ません
これが依存関係地獄というものでしょうか
解決方法はこざいますか
0725デフォルトの名無しさん2014/12/18(木) 17:19:44.60ID:iopRQF0Z
苦情や批判をやめれば幸運が引き寄せられ色々解決するみたいな風潮がございます
0726デフォルトの名無しさん2014/12/18(木) 20:18:28.89ID:r01MJC3+
我々は砂場遊びしかできない
0727デフォルトの名無しさん2014/12/18(木) 21:39:10.52ID:CMXXyuKT
>>721
紹介ありがとう

意味近似オーダーの辺りから急にムズくなった・・・

a [= b が、「b が a より更に定義されているか、同じだけ定義されている」ならば、
なんで 1 [= 2 や 2 [= 1 が成立しないのか分からん。
0728デフォルトの名無しさん2014/12/18(木) 23:08:33.10ID:CbaqRb4S
そこは書き方が良くないな。
[=が情報の量のみを比較しているような誤解を生む書き方になってる。
実際は「定義されてる部分に関しては等しく、より定義されている」だよ。
0729デフォルトの名無しさん2014/12/18(木) 23:20:51.50ID:CbaqRb4S
あ、[= じゃなくて [ だった
0730デフォルトの名無しさん2014/12/19(金) 00:36:51.21ID:g9e+0E+y
原発の廃炉会計制度見直しに関する経済産業省の有識者会議は十七日、
二〇一六年四月の電力小売り全面自由化後も、
大手電力会社の原発廃炉費用を電気料金に転嫁する方針を決めた。
全ての電力利用者に負担してもらう経産省案を大筋で認めた。
大手電力が老朽原発の廃炉を円滑に進められるよう、確実に費用を回収できるようにする。

有識者会議は、転嫁の方針を盛り込んだ報告書を来年一月に取りまとめる予定だ。
原発を持たない新規参入の電力小売会社の利用者も費用を負担することになり、反発も予想される。
経産省は今後、例外を設けるかどうか議論する。

現在の制度は、大手電力がコストを電気料金の原価に算入する「総括原価方式」により、
廃炉費用を電気料金に織り込んで徴収している。電力小売りの全面自由化によって料金競争が激しくなれば、
廃炉費用の上乗せが難しくなると予想されるため、新しい仕組みをつくる。

電力自由化では、一八〜二〇年をめどに実施される「発送電分離」により、
大手電力から分離して送配電会社ができる。

電力小売会社は大手電力のグループ会社である送配電会社に送電線の利用料(託送料)を支払う。
経産省は託送料に廃炉費用をプラスし、回収できるようにする考えだ
0731デフォルトの名無しさん2014/12/19(金) 09:32:49.97ID:eL8etcpJ
FTPって一気にドバーッとファイル転送してくるプロトコルですか?
httpでファイルダウンロードすると少し遅いので両者には効率に差があるわけですよね
話変わって、遅延評価的に接続と切断を頻繁に行って、クライアントが少しずつ必要に応じて必要な部分を逐次ダウンロードしていくプロトコルってないんですか?
接続をずっと維持しておくとサーバーに迷惑じゃないですか。遅延評価に最適化された形で、プログラマは仮想的にずっと繋いでおくようにコーディングするだけでよく、現実には内部で巧いこと接続と切断を調整してくれるプロトコルってありませんか?

@まずお前は間違いなく通信を理解していない
Aこれはプロトコルレベルで解決すべき問題ではなく、別の層で取り組むべき問題だ
Bその他(     )
0732デフォルトの名無しさん2014/12/19(金) 12:41:38.26ID:WOViO0DC
>>728
そういうことか

そもそも1と2では定義されているものが違うから比較しようがないのか
納得した
0733デフォルトの名無しさん2014/12/19(金) 15:27:59.91ID:PxcdzFuf
個人的興味があって昔昔に数学と哲学勉強してたんだけど、
Hascell楽しすぎる。
理屈の方が。スマン
0734デフォルトの名無しさん2014/12/19(金) 18:06:05.12ID:04+SghU6
>>731
A一択。仕事の話か?匿名の掲示板で話ししてもしょうがないだろ。
0735デフォルトの名無しさん2014/12/19(金) 18:24:48.97ID:04+SghU6
でも、俺もそういうプロトコル扱う仕事したいな。内容にもよるけど。
0736デフォルトの名無しさん2014/12/19(金) 20:11:44.66ID:rAA+xYtY
>>731
2

遅延評価はまったく関係ないように思える
C言語だろうとそういうインタフェースは実装できそう
0737デフォルトの名無しさん2014/12/19(金) 20:50:17.48ID:04+SghU6
いやいやC言語で実装できるなら既にそういうのあるはずでしょ。
それにこういうのはやっぱ新しいの挑戦することに意味があるんだと思うぜ。
0738デフォルトの名無しさん2014/12/19(金) 21:58:16.46ID:tuxkI12w
なぜ依存地獄になるのですか?
0739デフォルトの名無しさん2014/12/19(金) 22:03:54.12ID:WOViO0DC
>>731
「内部で巧いこと接続と切断を調整してくれる」プロトコルにするには、
何を以て「巧い」とするかを明確に定義する必要がある。
でなければ、プロトコルとしてルールにできない。

しかし、巧いと感じる接続と切断のタイミングは人それぞれだし、
同じ人でも作っているアプリや環境によって違ってくる。
つまり、定義できない。

よって、プロトコルとしてルールにはできない。


では、どうするか。

まず、プロトコルから離れること。
そして、どういう環境でどういう時にどういうタイミングなら巧いと言えるか、
多くの事例を可能な限り洗い出し、パターン化すること。
そうすれば、サーバーのデータを必要とする関数をラップする高階関数が作れる。
0740デフォルトの名無しさん2014/12/19(金) 22:23:01.10ID:04+SghU6
その高階関数の実装を一体誰が作るんだ。
不格好でもまずは動くもんつくるのが第一だろう。
0741デフォルトの名無しさん2014/12/19(金) 22:54:57.81ID:ak9MrmvV
多分サーバーとクライアントが逆になればうまくいくと言いたいんだろ
FTPにはアクティブモードがあるから
0742デフォルトの名無しさん2014/12/19(金) 23:06:10.76ID:04+SghU6
そんなかんじ。FTPなんてもう地味な存在なんだし長い目で見たらいいと思うぜ。
アクティブモードにするだけならそんなコストもかからんし。
0743デフォルトの名無しさん2014/12/19(金) 23:17:53.74ID:WOViO0DC
>>740
適切にパターン化されていれば、誰でも作れるんじゃないかな。
0744デフォルトの名無しさん2014/12/19(金) 23:32:08.97ID:04+SghU6
ソフトなんて一人作って公開すればみんな使えるぜ。
0745デフォルトの名無しさん2014/12/20(土) 06:27:06.26ID:sNTGK+/8
emacsの設定が上手くいきません
おすすめサイトなど御座いますか?
0746デフォルトの名無しさん2014/12/20(土) 08:51:52.69ID:KOa1fTF+
サーバー負荷とかクライアント数とかいう単語から
FTPでの接続制御でどうこうする問題じゃないとおもう
DHT プロトコルじゃないかな
https://github.com/aninhumer/haskell-dht
0747デフォルトの名無しさん2014/12/20(土) 08:55:24.98ID:XLHq169F
おれもemacsは未だに理解できない
圏論の方が簡単だった
0748デフォルトの名無しさん2014/12/20(土) 08:59:08.96ID:7Yc5eiA8
いまさらemacsなんて覚える必要ないじゃん
0749デフォルトの名無しさん2014/12/20(土) 10:31:09.38ID:1etDexZj
そんな先にはもうプログラマやってないからどうでもいいです
0750デフォルトの名無しさん2014/12/21(日) 01:54:58.29ID:uz6Dw6Ae
cmdargs-0.10.11 を使っています。

Implicit モジュールの argPos をひとつのモードでn>=2個以上使ったとき、ヘルプにも
ProgramName [OPTIONS] INT INT
みたいにn個の名前無し引数が表示されます。
またこのとき、n個未満の名前無し引数が与えられてプログラムが実行されると
エラーとして扱われます。

これと同じ挙動を Explicit モジュールの関数を使って実現できるでしょうか?
mode 関数の第4引数で名前無し引数の扱い方を指定できるのですが、
いくつの名前無し引数が必要かを指定する方法が無いような気がします。

しかも、その第4引数で与える Arg a 型の値の argRequire フィールドを True にすると、
ヘルプが見たくて ProgramName -? と実行しても、最低1つの引数が必要だと怒られます。

これはもう、この部分だけは自作するしかないですか?
0751デフォルトの名無しさん2014/12/21(日) 05:54:20.38ID:L414CFHe
emacsの設定が上手くいきません
おすすめサイトなど御座いますか?
0752デフォルトの名無しさん2014/12/21(日) 06:28:08.86ID:hjGN2SX+
>>751
しつこいよ!w
マジで困ってる系か?

haskellのemacs設定は現在のところ
https://github.com/serras/emacs-haskell-tutorial/blob/master/tutorial.md
が一番わかりやすい。日本のブログだとflymakeとか古い奴を推奨しているのがあって、混乱するかもしれん。

emacs一般のカスタマイズは、るびきち氏の著作を読むといい。
また、彼のブログにはカスタマイズの最新流行が随時紹介されるので、その辺も参考になると思う。


個人的にはemacsの設定にあんまり時間をとられるようなら、いっそポイして、モダンなIDE環境に移行した方がよいと思う。
https://www.fpcomplete.com/business/haskell-center/overview/
0753デフォルトの名無しさん2014/12/21(日) 06:38:33.96ID:L414CFHe
>>752
ありがとうございました。本当に感謝しております。
0754デフォルトの名無しさん2014/12/21(日) 13:03:51.37ID:uz6Dw6Ae
>>750
結局、Explicit モジュールの中だけで実現するのは無理だという結論に達し、
processArgs 関数を呼ぶ前に、コマンドライン引数の中に -? または --help があるか調べる方法を採りました。


と言うことでこれは諦めたのですが、別の疑問が出てきました。

Implicit モジュールでコマンドライン引数を解析する際、
enum 関数を使って、複数のコマンドライン引数を排他的に指定するようにできます。
例えば、-a と -b と -c のどれかひとつを指定できる引数の型を設定できるのですが、
これを Explicit モジュールの方で実現する方法はないでしょうか?
0755デフォルトの名無しさん2014/12/21(日) 13:30:09.57ID:L414CFHe
>>752
素晴らしい
0756デフォルトの名無しさん2014/12/21(日) 13:41:19.51ID:L414CFHe
>>752
英語読めません。
0757デフォルトの名無しさん2014/12/21(日) 14:36:59.52ID:tfypJLKU
マジで困ってる系
0758デフォルトの名無しさん2014/12/21(日) 14:41:26.60ID:hjGN2SX+
大丈夫、なんとかなる
0759デフォルトの名無しさん2014/12/21(日) 15:08:16.22ID:oOIcOLB4
ていうか仮にも一般的に難しいと言われることの多いHaskellを勉強しようっていうのに、上手く行きませんわかりません英語読めませんじゃどのみち無理でしょ
自分でどうにか理解しようとしないと
その上でわからないなら質問することはぜんぜん悪じゃないけど
0760デフォルトの名無しさん2014/12/21(日) 15:38:48.32ID:JX15aD5+
自ら努力せず分かる

それこそが最も価値があり、めざすべきものです
その理由は、努力とは、今すぐやめたいことをやることだからです
それを避けるために脳ミソが最大限に最適化されます
つまり、理解ではなく、理解したと錯覚することに納得するようになります

日本人が、大学に入学するとき、就職したとき、退職したときに劇的にIQを下げるのはそのためであり、鬱病の原因が進学・就職・退職であるのもそのためです

日本人のIQを上げたかったら、一切の努力をさせるべきではありません
0761デフォルトの名無しさん2014/12/21(日) 15:46:20.18ID:uz6Dw6Ae
[A a] -> A [a] このような写像全般を表す一般的な呼び方はあるでしょうか?
0762デフォルトの名無しさん2014/12/21(日) 16:19:38.79ID:L414CFHe
>>758
なんとか頑張ります。
0763デフォルトの名無しさん2014/12/21(日) 16:36:00.34ID:82ahHpnM
>>752
ついでにVim版もお願いします。恐縮です
0764デフォルトの名無しさん2014/12/21(日) 17:15:49.20ID:hjGN2SX+
>>763
すまんね。Vimは知らないんだ。
0765デフォルトの名無しさん2014/12/21(日) 17:59:48.04ID:nsbprUQ1
sequence :: Monad m => [m a] -> m [a]
0766デフォルトの名無しさん2014/12/21(日) 18:17:39.26ID:82ahHpnM
Arrowって使われるの?
0767デフォルトの名無しさん2014/12/21(日) 18:45:37.67ID:uz6Dw6Ae
>>765
モナドに限定してはいないのですが、
それでもシーケンスというニュアンスが合っているということてすか。

ありがとうございました。
0768デフォルトの名無しさん2014/12/21(日) 21:45:24.94ID:gUjWBnW3
努力の反対は偶然
分からないなら偶然分かる機会を待つ
この方法は誰も知らない分野でも使えるという圧倒的価値があります
0769デフォルトの名無しさん2014/12/21(日) 22:36:13.23ID:82ahHpnM
なんだか賢くなった気がする!
0770デフォルトの名無しさん2014/12/21(日) 23:20:03.82ID:uz6Dw6Ae
>>768
偶然分かる機会を捕らえるには、アンテナを張り巡らし、
センサーの感度を高めておく努力が必要です。
0771デフォルトの名無しさん2014/12/22(月) 00:05:55.14ID:5WIHq8Mf
>>766
first second right left この辺はよく使う
0772デフォルトの名無しさん2014/12/22(月) 01:08:32.20ID:+VHqhpCj
お勧めの英語翻訳サイト御座いますか?
0773デフォルトの名無しさん2014/12/22(月) 01:28:15.39ID:oe0TxKqO
御座います。
0774デフォルトの名無しさん2014/12/22(月) 02:14:55.30ID:iRuCc3wC
画像 セシウムボール
http://i.imgur.com/Psp2Hs3.jpg
2 ベータ線を出している危険
http://i.imgur.com/xRY3ThC.jpg
3 肺に溜まる
http://i.imgur.com/WJA2YcZ.jpg

福島第一原発の事故で大量に放出された放射性物質・セシウム。
放射線量などをもとにその汚染状況が調査されてきたが、
実際の化学的形態はよく分かっていなかった。

しかし、電子顕微鏡を用いた巧みな調査で、
不溶性の球形粒子として存在するものも多いことが明らかになった。
従来想定されていた水溶性粒子とは体内や
環境中でのふるまいが異なるため、
健康影響の推定などにも違う考え方が必要だ。
どのくらいの影響が懸念されるのか。
0775デフォルトの名無しさん2014/12/22(月) 03:15:58.72ID:+VHqhpCj
>>773
教えて頂けますか?
0776デフォルトの名無しさん2014/12/22(月) 10:05:10.51ID:sKRdz/+L
Haskellは無重力ボールペンなんだよな
何かの偶然で鉛筆を使うことをすっかり忘れてしまった
これを偶然ではなく努力不足とするのは冷酷だ
0777デフォルトの名無しさん2014/12/22(月) 12:42:35.11ID:iRuCc3wC
事故の収束に向けた作業が続く東電福島第一原発で、
多数の傷病者が発生している。
資源エネルギー庁への情報開示請求で開示された資料からわかった。
そのほとんどが、未公表だった。

開示されたのは、東電から資源エネ庁に
送られた事故発生時の連絡メール。
事故の大小にかかわらず、また労災の適用か
どうかにも関係なく、発生と同時に発生場所や状況、
ケガの程度、治療内容などが連絡されている。

期間は2014年4月1日〜9月23日

熱中症 32件
脱水症 5件
体調不良 18件
ケガ 43件(骨折9件、縫合処置9件)
病院への搬送 22回(救急搬送13回、業務車による搬送4回、ドクターヘリ3回、搬送方法不明2回)
0778デフォルトの名無しさん2014/12/22(月) 21:59:18.23ID:ZeHTWNeo
>>763 Haskell をそんなにたくさん書いているわけではないですが個人的には
Vim + vim2hs + neco-ghc + ghcmod-vim + ref-hoogle + quickrun でかなり快適です
0779デフォルトの名無しさん2014/12/22(月) 22:11:51.54ID:+VHqhpCj
emacsの設定上手くいきません
もう少し頑張ります。
0780デフォルトの名無しさん2014/12/22(月) 23:52:45.47ID:LJpgVP50
raspberry pi が10個あるんですけど、haskellで何かできませんかね?
0781デフォルトの名無しさん2014/12/23(火) 10:48:35.95ID:LTt8RR1X
>>697
理解が逆。

関手則なんかは図式で説明すれば「ああなるほど」とすぐ判る。
加えて、まれによくある「合成の順番の間違い」なんかも図式を併記すると
1.書く人が事前に間違いに気づきやすい
2.間違いが放置されても図式から正しい関係式を復元しやすい
という利点がある。

言葉で整理するより適宜図を使うほうがわかりやすいということは
OOPでも知られている。ただし、UMLなどと違って圏論の図式は
「関係の整合性」を非常に意識する/させるものになっている。

ライブラリのコンシューマがあれこれ圏論まで知る必要があるかといえば
別にないとは思うが、ライブラリの生産者になりたいならば、圏論が
示唆してくれる、関係の整合条件は非常に役に立つ。
0782デフォルトの名無しさん2014/12/23(火) 11:08:54.70ID:aSx5B0NM
>>778
ありがとうございました
0783デフォルトの名無しさん2014/12/23(火) 11:16:18.62ID:SvNKn2Fi
>>697の言う図と>>781の言う図式は認識がかみ合っていない

>>697の言ってるのはPCのアイコンとか人の顔とか本当に絵で表現してる「図解」ってやつだ
0784デフォルトの名無しさん2014/12/23(火) 12:11:45.35ID:dkZcT41A
そういうの「図式」って言わないんじゃないの?
>>697も単なる「図」じゃなくて「図式」っていってるよね。
0785デフォルトの名無しさん2014/12/23(火) 12:22:15.44ID:p0oEscBy
>>697は、>>696へのコメントだから、圏論の図式のことでしょ。

俺は、言葉と図式は両方大切だと思うが。
0786デフォルトの名無しさん2014/12/23(火) 12:54:08.68ID:Q7XoM0KC
emacsの設定上手くいきません
もう少し頑張ります。
0787デフォルトの名無しさん2014/12/23(火) 14:26:17.15ID:Q7XoM0KC
諦めたほうがいいですか?
0788デフォルトの名無しさん2014/12/23(火) 15:26:21.45ID:V0LRqITK
>>781
言っているのは圏論の図式のことだが、関係の整合性を図式で表すのは
いいのだが、関係を図で表しても図のどの記号がどの概念に対応するのか
分かり難いから言葉で補足しないとよんでもわかった感じになるだけで
実際具体的にどうすればいいのかわからなくなってしまう、と指摘してる。
0789デフォルトの名無しさん2014/12/23(火) 15:34:01.39ID:V0LRqITK
だが、確かに事前に間違いを洗い出すという意味であれば、
大体の関係がわかる図式は意味があるかもしれないが、
やはりそれでも図式のどの記号が何に対応するのかという
対応関係は必要だ。
0790デフォルトの名無しさん2014/12/23(火) 15:55:49.38ID:V0LRqITK
圏論はどう考えてもこれから来ると思う。ただ、抽象的な理論なもんで、
使い所がわかってもらえないという欠点がある。はっきり言ってしまえば
何にでも使えるというのは、特に特化したものがなく何にも使えないという
ことだ。これこれに具体的に使えますというところをアピールしていかないと
いけないといけないのだろう。
0791デフォルトの名無しさん2014/12/23(火) 17:06:21.56ID:egk/n0nz
行数制限のせい?
0792デフォルトの名無しさん2014/12/23(火) 17:07:59.70ID:dEKTP0i+
三段論法
0793デフォルトの名無しさん2014/12/23(火) 18:09:10.59ID:SvNKn2Fi
いかないといけないといけないのだろう
0794デフォルトの名無しさん2014/12/23(火) 19:03:28.19ID:fCOeUT1x
わかってる人にも図式は重要なんだが、
わかってない人に図式メインで説明しちゃったりすると…
0795デフォルトの名無しさん2014/12/23(火) 19:43:26.28ID:aSx5B0NM
なんだこの図はIQテストか!
0796デフォルトの名無しさん2014/12/23(火) 22:53:47.56ID:EhLsW63J
よくわかんないけど圏論てちゃんと形式化できるの?
図式メインって・・・
0797デフォルトの名無しさん2014/12/23(火) 23:15:31.47ID:sisXRsnQ
論文みると図式で証明してるしな
0798デフォルトの名無しさん2014/12/23(火) 23:18:22.29ID:V0LRqITK
メリットの有無の問題だろう。絵(図式)に書いた餅という言葉も
あるように、抽象論は得てして現実との壁が問題になる。
だから、大事なのは現実の方を理想に合うように徐々に理解してもらう
ということが大事なのだが、モナドみたいに便利みたいな機構を
一気に見つかることを考えていると一向に進まない。
0799デフォルトの名無しさん2014/12/24(水) 03:10:09.72ID:eQ8NsaON
子供4人、甲状腺がん疑い 原発事故直後「異常なし」

 福島県の子供を対象に東京電力福島第1原発事故による放射線の影響を調べる甲状腺検査で、事故直後の1巡目の検査では「異常なし」とされた子供4人が、
4月から始まった2巡目の検査で甲状腺がんの疑いと診断されたことが23日、関係者への取材で分かった。

 25日に福島市で開かれる県の検討委員会で報告される。調査主体の福島県立医大は確定診断を急ぐとともに、事故による放射線の影響かどうか慎重に見極める。
 検査の対象は1巡目が事故当時18歳以下の約37万人で、2巡目は事故後1年間に生まれた子供を加えた約38万5千人。1次検査で超音波を使って甲状腺のしこりの
大きさや形状などを調べ、程度の軽い方から「A1」「A2」「B」「C」と判定し、BとCが血液や細胞などを詳しく調べる2次検査を受ける。

 関係者によると、今回判明したがんの疑いの4人は震災当時6〜17歳の男女。1巡目の検査で「異常なし」とされていた。4人は今年4月からの2巡目検査を受診し、
1次検査で「B」と判定され、2次検査で細胞などを調べた結果「がんの疑い」と診断された。
 また、1巡目で、がんの診断が「確定」した子どもは8月公表時の57人から27人増え84人に、がんの「疑い」は24人(8月時点で46人)になったことも新たに判明した。
0800デフォルトの名無しさん2014/12/24(水) 06:08:34.15ID:x5jlET52
>>798
抽象的な書き込みですね
0801デフォルトの名無しさん2014/12/24(水) 06:13:49.55ID:x5jlET52
Haskellをジャバスクリプトに変換してくれるソフトがあるそうですね
0802デフォルトの名無しさん2014/12/24(水) 08:39:37.21ID:COrfxw1w
>>796
複雑な関係を二次元に配置することで、「目で追いやすくする」のが図式の
旨味なのであって、もし機械的に検証したいということであれば図式の
各要素に対応する関係式を並べた「連立関係式」として図式を定式化することは
できる。
0803デフォルトの名無しさん2014/12/24(水) 11:02:05.72ID:Mlxryodi
>>801 意外と複数あるっぽくてビビる
個人的に Haste を触ってみたことあるけどちゃんと動いてビビる
+ 本体がきちんと haskell なので ghc-mod とか使えて便利
0804デフォルトの名無しさん2014/12/24(水) 18:39:43.26ID:LWplasa6
>>802
連立関係式といっても図式の各要素に対応するのは一体なんなの?
関係式がいっぱいあっても主要なものとかあるわけで、
その図式の目的と自分の欲しい性質とズレていないかとか確認できないと
意味ないと思うんだ。
0805デフォルトの名無しさん2014/12/24(水) 19:04:58.26ID:Wq6i2xwr
可換図であればその図内の任意の対象から任意の対象への射の合成はすべて等しいってことでは?
0806デフォルトの名無しさん2014/12/24(水) 19:26:45.70ID:6s3MBilM
おまえらクリスマスイブに小難しい話してるな
0807デフォルトの名無しさん2014/12/24(水) 22:45:08.96ID:LWplasa6
こっちの方が大事だから。
0808デフォルトの名無しさん2014/12/25(木) 04:38:48.80ID:loGzlscL
諸君、議論したまえ
0809デフォルトの名無しさん2014/12/25(木) 17:46:11.33ID:U8H2C/ZD
emacsの設定上手くいきません
0810デフォルトの名無しさん2014/12/25(木) 18:11:45.47ID:rSdGRMg2
メリー

>>809
具体的に何が上手くいかないのかを書いてくれれば助けることができるかも。
0811デフォルトの名無しさん2014/12/25(木) 18:16:22.29ID:U8H2C/ZD
ありがとうございます
分かりやすい最新の日本語サイトなどありますか?
0812デフォルトの名無しさん2014/12/25(木) 18:29:12.03ID:rSdGRMg2
うーん、Haskell関連は上に書いたのが知ってる全てだよ。
Emacsスレに行けばもっと詳しく教えてくれるかもしれないね。
0813デフォルトの名無しさん2014/12/25(木) 18:32:21.96ID:U8H2C/ZD
ありがとうございました
0814デフォルトの名無しさん2014/12/25(木) 19:14:31.32ID:51/AMN5x
ライブラリを自作しています。
jenkins で CI 環境を組み、実際のビルドは cabal で行っています。
jenkins のあるサーバーを仮にビルドサーバーと呼ぶことにします。

ビルドサーバーでは下記のコマンドでビルド&テストしています。
cabal configure --enable-tests
cabal build
cabal test --test-option=--jxml=test_result.xml

外部ライブラリを import している *.hs ファイルをビルドする際、
*.cabal ファイルの build-depends の項にそのパッケージ名を書きますが、
ビルドサーバーにそのパッケージがインストールされていなければ、
cabal configure の時点でパッケージが無いと言われて
ビルドプロセスが失敗に終わります。

なので、現在はビルドサーバー側において、
ビルド前に手作業でパッケージのインストールを行っています。

ですが、とても面倒です。せっかくの自動ビルド&テスト環境なので、
未インストールパッケージのインストール作業も自動化させたいです。

そのようなことをスクリプトを組まずに cabal だけで実現する方法は無いでしょうか?
無ければ諦めてスクリプトを組みますが、できれば cabal で済ませたいです。
Setup.hs 内で仕組みを作る方法でも構いません。

ちなみに、自作ライブラリのビルド時、cabal install はしません。
デプロイ先はビルドサーバーではないので。
0815デフォルトの名無しさん2014/12/25(木) 19:53:42.98ID:U2ewRSz9
仕事欲しい
0816_2014/12/25(木) 21:03:07.10ID:hXzTK8zn
先生達〜 ghc7.8.4 doデスカ
0817デフォルトの名無しさん2014/12/25(木) 22:43:57.72ID:o1f0eY0P
>>814
cabal sandboxじゃだめなの?
0818デフォルトの名無しさん2014/12/25(木) 23:57:58.85ID:X2VFu+qz
今日からHaskell始めました
いますごいH本の7ページ目を読んでます。
0819デフォルトの名無しさん2014/12/26(金) 02:12:28.61ID:vtMrfWur
福島産コシヒカリと秋田産あきたこまちを混ぜ、長野産コシヒカリとして販売 長野の卸売業者
0820デフォルトの名無しさん2014/12/26(金) 08:48:48.52ID:7GmGQZy0
[´・_←仕事辞めちゃったん?Haskell本の訳とか講演?とかしてるっぽいから尊敬してたのに…
   三国志で例えると郭嘉かな。あと矢印付けるとウインクしてるみたい
0821デフォルトの名無しさん2014/12/26(金) 08:51:16.19ID:7GmGQZy0
あ、郭嘉は陳羣に苦言を呈されるほど女遊び激しかったから違うか
0822デフォルトの名無しさん2014/12/26(金) 09:36:01.82ID:uhdbAiNi
ぽよステマ
0823デフォルトの名無しさん2014/12/26(金) 14:36:40.94ID:vtMrfWur
http://i.imgur.com/U4mga9u.jpg
0824デフォルトの名無しさん2014/12/26(金) 15:05:02.45ID:gos9dDUg
emacsあああ・・・・
0825デフォルトの名無しさん2014/12/26(金) 18:00:48.27ID:rv+l+9HF
>>817
アドバイスありがとうございます。

sandbox について調べてみました。
一度ビルドサーバーにインストールしたパッケージは、
同じビルドサーバーで扱う他のプロジェクトでも共有したいので、
どうも今回の目的には合っていないようです。

ただ、調べている過程で、cabal install --only-dependencies をすることで
目的が達成されることが分かりました。

今回はこの方法をとりますが、sandbox はローカルな環境でテストするには良さそうなので、
その際はいただいたアドバイスを活かしたいと思います。
0826デフォルトの名無しさん2014/12/26(金) 20:34:25.15ID:7vJpfHRF
気が向いたときにHaskell本を難度順に並べておいてください
0827デフォルトの名無しさん2014/12/27(土) 12:21:18.72ID:x5x1r/6h
プログラミングHaskell < 関数プログラミング実践入門 = すごいH < Realworld <<<<<< 珠玉

関数プログラミングのたのしみと並列・並行は読んでないけど
ほぼ間違いなくすごいH以上珠玉未満
0828デフォルトの名無しさん2014/12/27(土) 12:23:40.31ID:x5x1r/6h
プログラミングHaskellは後半ちょっと難易度あがるけど、薄いので多分一番入りやすい
0829デフォルトの名無しさん2014/12/27(土) 13:04:43.96ID:Xe8/BGM1
ふつケルはどの位置か?プログラミング Haskell よりさらに前か‥結構てこずってんだが‥
0830デフォルトの名無しさん2014/12/27(土) 14:02:56.08ID:JrG0d0YE
ふつうのHは大事なところを省略しすぎてかえって難しくなってるパティーン
0831デフォルトの名無しさん2014/12/27(土) 14:22:28.43ID:cA3tryxg
ネットにもある情報は省略すればいいよ
いま足りてないのは洗脳を解くための情報
例えばC言語でオブジェクト指向とか
OCamlでモナドとか
外国にも四季があるとか
0832デフォルトの名無しさん2014/12/27(土) 14:54:08.25ID:TjPtBoaF
RealWorld < 関数プログラミング入門 < 関数プログラミングのたのしみ < 珠玉

かな。
0833デフォルトの名無しさん2014/12/27(土) 15:10:44.50ID:x5x1r/6h
すごいH以下は入門なんでどれか一冊で良いと思う
ふつケルは当時良い本だったけどもう内容古いしぶっちゃけ読まんでいい
0834デフォルトの名無しさん2014/12/27(土) 15:15:28.45ID:+eeTs6yQ
トレンチを埋め立て後も汚染水位変動
12月26日 18時53分
http://www3.nhk.or.jp/news/html/20141226/k10014317271000.html

東京電力福島第一原子力発電所で、「トレンチ」と呼ばれる地下のトンネルに高濃度の
汚染水が流れ込んでいる対策として、トンネルの大部分をセメントで埋め立てたにもかかわらず、
依然として水位の変動が続いていることが分かりました。
東京電力は、埋め立てた部分に隙間ができているとみて対策を検討することにしています。

福島第一原発の建屋からトレンチに流れ込んでいる高濃度の汚染水について、
東京電力は当初、一部を凍らせるなどして流れをせき止めたうえで抜き取る計画でしたが、
作業が難航したため、先月から汚染水が入った状態のままセメントを流し込み、
トレンチの埋め立てと汚染水の抜き取りを並行して進めてきました。
26日開かれた原子力規制委員会の会合で、東京電力は、地上とトンネルを結ぶ
4か所の縦穴を除いて埋め立てが終わり、およそ2500トンの汚染水を抜き取ったと
報告しました。

ところが、縦穴から試験的に汚染水をくみ上げたところ、別の縦穴の水位が変動し、
埋め立てた部分でセメントに隙間ができている可能性があるとしています。
東京電力は、縦穴の部分を埋め立てれば汚染水は遮断できると説明しましたが、
委員や専門家からは調査が不十分だとする指摘が出され、東京電力は今後1か月かけて
水位の監視を続け、さらに隙間がないか確認するとともに、汚染水の流れを確実に
遮断する方法を検討することにしています。
0835デフォルトの名無しさん2014/12/27(土) 15:23:29.28ID:kcXcAVhx
>>834
Haskellでプログラミングするとこうなるってこと?
0836デフォルトの名無しさん2014/12/27(土) 16:04:31.24ID:cA3tryxg
実装の詳細を知る必要はないとか言ってる人間が悪い
0837デフォルトの名無しさん2014/12/27(土) 20:27:50.38ID:Z5TU2mXJ
リスト遊び、モナド説明のあとの Haskell っぽさが学べる本が、…たのしみ・珠玉の前に必要
昔はテンプレに School of Expression ってのがあって面白かったけど
0838デフォルトの名無しさん2014/12/27(土) 22:36:59.91ID:Wg0rqo6T
どや顔でhaskellの話が出来るおじさんになりたい
0839デフォルトの名無しさん2014/12/28(日) 01:34:50.55ID:ZRAzXvYs
政府、特定避難勧奨地点を解除 福島・南相馬市で

 政府の原子力災害現地対策本部は28日、東京電力福島第1原発事故に伴い、放射線量が局所的に高い
 「ホットスポット」として福島県南相馬市に指定した特定避難勧奨地点142地点(152世帯)の指定を解除した。

 避難勧奨地点は2011年6月以降、福島県の伊達市や川内村、南相馬市に指定されたが、12年12月に
 伊達市と川内村は解除されており今回、避難勧奨地点は全てなくなる。

 南相馬市では対象の住民のほとんどが解除に反対しており、住民理解が得られないままの強行となった。
0840デフォルトの名無しさん2014/12/28(日) 12:20:19.22ID:TtlxAxKY
>>838
すげー近視眼的。
0841デフォルトの名無しさん2014/12/28(日) 21:12:56.68ID:yGhAGsqu
>=> 2015年の目標 >=>

・パズルゲー作る
・珠玉を読了する

みんなは?
0842デフォルトの名無しさん2014/12/28(日) 21:21:57.28ID:6IxIWlMA
arXivにHaskell使って論文出す
0843デフォルトの名無しさん2014/12/28(日) 23:50:28.48ID:zst8R7oQ
Haskellの先の言語を作る
0844デフォルトの名無しさん2014/12/29(月) 01:05:19.44ID:UfejTaM+
haskell 関係でgoogle usaで働いているらしい人あてに問い合わせのメール
送りたいんだけどgoogleにそういう問い合わせするときってどこが
一番可能性高いもん?直接のメールアドレスはわからんのでgoogle経由で
やるしかないのよ。
0845デフォルトの名無しさん2014/12/29(月) 01:54:36.75ID:+0aaYlGc
今まで読めなかったコードを読了する
読了していないコードをスパゲッティなどと罵倒しない
0846デフォルトの名無しさん2014/12/29(月) 02:00:23.30ID:GtpJGJV9
>>844
Google経由は可能性低いと思う。
その人を知った経路方面から連絡できそうなもんだが。
0847デフォルトの名無しさん2014/12/29(月) 02:12:27.35ID:UfejTaM+
>>847
そうかー。どっか知ってそうな人探していくか。ありがとう。
0848デフォルトの名無しさん2014/12/29(月) 02:12:35.48ID:4HBx8iTh
>>844
Haskell コミュニティの中に google 関係者の人がほぼ確実にいる。
Haskell 関連のニュースグループとかで呼び掛ければいいと思うよ。
0849デフォルトの名無しさん2014/12/29(月) 12:35:44.97ID:UfejTaM+
>>848
おっ、その手があったか。さっそくやってみるよありがとう。
0850デフォルトの名無しさん2014/12/30(火) 23:34:29.91ID:DyAtZuWT
sandboxから、他のsandboxにインストールされているライブラリを使う方法って無いのかな
0851デフォルトの名無しさん2014/12/31(水) 00:02:22.39ID:WNT3VYT+
それが出来たらサンドボックスにならんのとちゃうの
0852デフォルトの名無しさん2014/12/31(水) 01:04:15.55ID:GCVJ4yxq
>>851 まあ、それはそうなんだけど…

A
|-B
|-C

↑ABCがサンドボックスで、Aの中のパッケージをBとCで共有できればいいなって思ったんだ
0853デフォルトの名無しさん2014/12/31(水) 10:18:03.32ID:lcJbVM3e
メタサンドボックス!
0854デフォルトの名無しさん2014/12/31(水) 10:22:47.34ID:Z+SsAvdG
サンドボックスって何だったっけ
0855デフォルトの名無しさん2014/12/31(水) 10:52:37.15ID:lcJbVM3e
耳を切り落とした食パン二枚で箱を挟むのです
0856デフォルトの名無しさん2014/12/31(水) 16:14:08.93ID:Xcj97OXD
Haskellで作るアプリにユーザーがHaskellのコードスニペットをスクリプトとして読み込ませ、
インタープリトしてアプリの内部機能(関数)を呼ぶ仕組みを作りたいのですが、
そういうことを支援するライブラリってないですか?
0857デフォルトの名無しさん2015/01/01(木) 00:45:25.99ID:9UEsBz6A
persistent は既存のデータベースとマイグレートできますか。
persistent で新規に作ったものなマイグレートできたのですが...
0858デフォルトの名無しさん2015/01/01(木) 07:17:30.03ID:dTLG2CI1
emacs設定あああ・・・・
0859デフォルトの名無しさん2015/01/01(木) 11:15:21.99ID:dOFDAbHH
今年こそHaskellは覇権を穫れるでしょうか?
0860デフォルトの名無しさん2015/01/01(木) 11:43:45.40ID:slaO93jU
論文だけは量産できるんじゃない?
0861デフォルトの名無しさん2015/01/01(木) 12:56:46.42ID:MuKGxtH/
永久に覇権を取れないでしょう.
ま,それでもいいのでは.
0862デフォルトの名無しさん2015/01/01(木) 13:00:08.82ID:MuKGxtH/
「Haskell 使ってて普及するわけないと思った時」 ってスレを
作ろうかと思ってしまうのは私だけなのかな.
0863デフォルトの名無しさん2015/01/01(木) 13:49:49.40ID:9nX5wxEB
Haskell は秘密兵器のままでいいよ、でないとおれが困る
0864デフォルトの名無しさん2015/01/01(木) 14:07:26.86ID:wXHHaUzE
Haskellも悪いところあるけど
「普及」という観点になると他言語との比較になるので
(Haskellがクソでも他のやり方がもっとクソなら消極的には普及しない理由にならない)
比較優位・劣位が示せないと使ってる人間が大した問題に取り組んでないんじゃねーのという話になる
0865デフォルトの名無しさん2015/01/01(木) 14:18:00.13ID:kfvwaXN/
Haskellが普及してると思うか思わないかで、大学の学部が分かる気がする
0866デフォルトの名無しさん2015/01/01(木) 14:32:11.80ID:9UEsBz6A
persistent の template haskell によるテーブルの定義において、
任意の列をシーケンシャルな整数値型に設定する方法は無いでしょうか。

プライマリキーを明示しなければ、自動的にIdを格納する列が作られ、
それがシーケンシャルになります。
当然、sql の CREATE SEQUENCE 文も発行されます。

これをプログラムの方で制御したいです。
0867デフォルトの名無しさん2015/01/01(木) 15:07:36.82ID:d7zle5+f
>>864
コスパが良い90点とコスパが悪い100点を客観的に比較する方法を
真面目に考える人間がいない

客観性に興味がない人間か、客観的?だが不誠実な人間しかいない
0868デフォルトの名無しさん2015/01/01(木) 15:55:20.42ID:NnfRb1B/
>>866
それなら少し前に俺も同じ問題にぶち当たったけど、素直にやるのは無理という結論に至った。
自分でシーケンシャルになる事を保証する採番システムを作るか、persistent-mysql等のpersistentとDBの間に入るライブラリを改造するしかない
0869デフォルトの名無しさん2015/01/01(木) 16:46:31.64ID:9UEsBz6A
>>868
なるほど。

今のところ、ふと疑問に思っていろいろ模作していただけなので、
とりあえず諦めることにします。
そのうちまたアップデートされるでしょう。
去年の夏に 2.0 になって大幅に改善されましたし。

ありがとうございました。
0870デフォルトの名無しさん2015/01/01(木) 20:43:38.34ID:LWrX8qsS
今年こそhaskellをやりたい
web上にある入門サイトでさらっとやった後すごいH本を読めばいいのかな
0871デフォルトの名無しさん2015/01/01(木) 23:04:10.82ID:KAFT5WeC
直接でも大丈夫。
0872デフォルトの名無しさん2015/01/02(金) 00:12:52.66ID:E64/hkZF
>>870
多分ほとんど二度手間になると思う
入門的な知識ならすごいH本一冊で十分
0873デフォルトの名無しさん2015/01/02(金) 01:40:45.48ID:4OESuPGN
emacsの設定上手くいきません
0874デフォルトの名無しさん2015/01/02(金) 07:28:07.89ID:0y0bMK9q
今年は『関数プログラミングの楽しみ』を頑張って理解します
0875デフォルトの名無しさん2015/01/02(金) 10:17:25.79ID:P90P93Dj
『関数プログラミングの楽しみ』は代わりのない良書だよね
0876デフォルトの名無しさん2015/01/02(金) 10:57:57.77ID:Y1NWcE5T
『関数プログラミングの哀しみ』は救いのない良書だよね
0877デフォルトの名無しさん2015/01/02(金) 11:49:20.34ID:qMjEYwOF
文字列を putStr でコンソールに出力したときに、
実際にレンダリングされる全体の文字幅を知る方法は無いでしょうか?
(コンソールや端末エミュのフォントが等幅であるという前提です)


"aあ" --> 3
"nasu" --> 4
0878デフォルトの名無しさん2015/01/02(金) 11:55:12.13ID:Gv4nBwoE
等幅でも「あ」が「a」の2倍とは限らないんじゃない?
0879デフォルトの名無しさん2015/01/02(金) 13:01:18.02ID:K/U8TI6c
実装が簡単になるように設計して良いなら丁度2倍が良いよね
それを容認すると設計する人は実装の勉強もしなければならない
設計者とプログラマーの身分が同じになる
0880デフォルトの名無しさん2015/01/02(金) 13:03:58.29ID:qMjEYwOF
>>878
私もコンソールや端末エミュ、使用フォントによって変わってくると思います。

そのような環境情報を踏まえて、実際に何文字分で出力されるかを知る方法が知りたいです。

いろんな国のアルファベットが混在したUTF-8エンコード文字列を右寄せで標準させたいです。
0881デフォルトの名無しさん2015/01/02(金) 13:04:59.99ID:qMjEYwOF
>>880
標準させたい ---> 表示ささたい
0882デフォルトの名無しさん2015/01/02(金) 13:38:31.79ID:Gv4nBwoE
>>880
cursesで右寄せはダメなの?
0883デフォルトの名無しさん2015/01/02(金) 13:54:58.10ID:WWxidtQA
>>880
Unicodeなら規格がある。
ただし全角と半角の2種類だけじゃないし、ギリシャ文字のように文脈依存とされているものもある。
0884デフォルトの名無しさん2015/01/02(金) 14:31:04.40ID:qMjEYwOF
>>882
curses(hscurses)は複数の言語に対応しており、
正しく右寄せできるてしょうか?

と言うのも、ただ右寄せ(可能なら中央寄せも)表示するだけに、
CUIライブラリの基礎から使い方を覚えるのは少々気合いとまとまった時間が必要です。
できることなら、取りかかる前に、本当にできそうか見当をつけておきたいです。


>>883
UTF-8 限定で構いません。
種類があるといことは、理論上は、文字列が与えられたら、
どの位置にあるどの文字がどの種類なのかマッピングできるということですよね。
(一回のパースで可能か知りませんが)

そのようなマッピングを行うライブラリはないものでしょうか。
もちろん、HaskellではなくC言語製の外部ライブラリで構いません。
0885デフォルトの名無しさん2015/01/02(金) 15:36:46.14ID:WWxidtQA
>>884
そんなライブラリがあるかどうかは知らないが、もし自分でやるなら文字ごとのテーブルを持って
ここに書いてあるような方法で求めることになるだろう。

http://ja.wikipedia.org/wiki/東アジアの文字幅

ただし既存のコンソールを使う場合、それがこの仕様に従っているとは限らないがな。
0886デフォルトの名無しさん2015/01/02(金) 16:15:20.26ID:P90P93Dj
>>884
http://hackage.haskell.org/package/unicode-properties-3.2.0.0/docs/Data-Char-Properties-Misc.html
Hackage でそれっぽいの見たけど、
isIdeographic が近いけどひらがなとかは False って言われそうだし、
他にそれらしいのは無さそう。
他のライブラリはあるかもしれないが。
0887デフォルトの名無しさん2015/01/02(金) 16:18:16.17ID:qMjEYwOF
>>885
UTF-8対応を謳っているコンソールや端末エミュでも、
実際はそういう幅の情報を正しく扱っているとは限らない
ということですね。

国際化対応の右寄せ、中央寄は GUI の方がむしろ楽そうですね。

CUI で取り組むのは諦めることにします。

みなさん、ありがとうございました。
0888デフォルトの名無しさん2015/01/02(金) 16:33:28.18ID:qMjEYwOF
>>886
isIdeographic 'ぬ' = False
isIdeographic '月' = True
isIdeographic '十' = True
でした。

ただ、文字の意味による分類が分かったところで、文字幅は推測できな誘うてすね。
0889デフォルトの名無しさん2015/01/02(金) 16:51:12.79ID:/upm+g4t
>>872
H本とプログラミングhaskellで迷ってる
内容被ってて大きな差はない?
0890デフォルトの名無しさん2015/01/02(金) 17:44:09.19ID:9VoF1EwG
>>889
H本の方がえっち
プロハスは文学みたい
0891デフォルトの名無しさん2015/01/02(金) 18:03:41.10ID:0y0bMK9q
「プログラミングHaskell」はフォントとかコード例が何か妙に見づらくて・・・
まあ慣れの問題だろうけど、プログラムコードに斜字体とか、->を→で表記してたりとか色々頭の中で変換しなきゃならない点が気になる
この本は買う前に一度中をパラパラっと立ち読みして確認するのを推奨したい
「すごいH本」もいいけど「Real World Haskell」も懇切丁寧な解説だし、検討対象に含めるべきではないでしょか
0892デフォルトの名無しさん2015/01/02(金) 19:13:58.12ID:h0TOXPGS
じぶんはプログラミングHaskellでわかったけど
すごいH本はそのまま打ち込めるからわかりやすいかも
0893デフォルトの名無しさん2015/01/02(金) 19:31:03.40ID:gE/lARkH
伝説の すごい H
0894デフォルトの名無しさん2015/01/02(金) 23:42:05.61ID:9S1+snqg
>>893
カレイドスター?
0895デフォルトの名無しさん2015/01/03(土) 00:31:08.05ID:W/QuRkoc
グチなんだか

Persistent のテンプレートでテーブルを作ると、命名規則に困るよね。

share [ゴニョゴニョ] [persistLowerCase |
 Record
  name String

とかやると、テーブル名がそのまま Record で作られる。
単数形で気持ち悪い。

かといって、

 Records
  name String

とすると、今度は Haskell ソース内で1行のデータを扱うのに複数形になる。
これもやっぱり気持ち悪い。
0896デフォルトの名無しさん2015/01/03(土) 00:38:25.72ID:xmK4LLNx
emacsの設定
分かりやすいサイト
てありますか?
0897デフォルトの名無しさん2015/01/03(土) 00:47:20.83ID:XTjqDow2
あります
0898デフォルトの名無しさん2015/01/03(土) 01:00:40.17ID:plSESCEK
>>895
Record sql=records
 name String
0899デフォルトの名無しさん2015/01/03(土) 02:01:15.24ID:6Fxgjg/0
なるほどBotか。
0900デフォルトの名無しさん2015/01/03(土) 03:34:04.01ID:xmK4LLNx
>>897
教えていただけますか?
0901デフォルトの名無しさん2015/01/03(土) 09:23:35.80ID:W/QuRkoc
>>898
すげー、できた、ありがと

ちゃんと http://www.yesodweb.com/book/persistent に書いてあった。
他の Entity sintax の記事へのリンクも。
完全に見逃してたよ。
0902デフォルトの名無しさん2015/01/03(土) 11:32:29.88ID:W/QuRkoc
Persistent で2つ以上のテーブルから参照して結果を合成するのは、
合成処理を Haskell でプログラムするか、
rawQuery で SQL を直接書くかするしかないかな?

たとえば、テーブルAの列aがテーブルBのプライマリキーを外部キーとして参照してて、
基本テーブルAの一覧を表示したいんだけど、テーブルAの列aの所だけは
テーブルBのある列の値に置き換えて表示したい。

今までは両方のテーブルを selectList で取って、テーブルB は Data.Map に入れておき、
テーブルAの一覧を表示するときにその Map を参照してたんだけど、
もっといい方法があるのかなと思って。
0903デフォルトの名無しさん2015/01/03(土) 13:07:02.82ID:W/QuRkoc
>>902
belongsTo系関数でできたわ。
やっとこの関数の意味が分かった。
0904デフォルトの名無しさん2015/01/03(土) 13:37:54.59ID:2T/NAfAr
>>903
esqueletoってライブラリも見てみると良いと思う
0905デフォルトの名無しさん2015/01/03(土) 14:13:42.80ID:W/QuRkoc
>>904
感動した。

正直言って belongsTo 系関数は使いにくいと思ってたところなんだ。
selectSource を起点とした conduit の中では使えんし、
selectList でとったリストの要素に施すにしてもゴチャゴチャするし。

esqueleto 凄すぎ。
こっちも、ちょっとゴチャゴチャするけど、そんなデメリットなんか吹っ飛ぶわ。

ありがと。
0906デフォルトの名無しさん2015/01/03(土) 21:23:43.84ID:gBJh/h4v
どこで質問したらいいのかわからないのでスレちがいならごめんなさい。
HTML 5エンジンの自作は、ライセンス的にOKですよね?
javascriptエンジンの自作はライセンス的に駄目ですよね。
0907デフォルトの名無しさん2015/01/03(土) 21:27:35.91ID:XTjqDow2
自作して自分で使う分には何を自作しても問題ないはず
0908デフォルトの名無しさん2015/01/03(土) 21:32:36.94ID:gBJh/h4v
>>907
公開したいです。
0909デフォルトの名無しさん2015/01/03(土) 21:45:09.08ID:+skQnDmf
無限ループをさせるにはどうしたら良いでしょうか?
再帰呼び出しで無限ループにしてみましたが、関数を抜ける時に、
今まで呼び出した回数分遡っていたので、
いつかスタックオーバーフローになるのではないかと思ってます。
0910デフォルトの名無しさん2015/01/03(土) 21:49:03.01ID:W/QuRkoc
>>906
JavaScriptエンジンって、オープンソースでいくつかあると思うが

ああいうのとは違うの?
0911デフォルトの名無しさん2015/01/03(土) 21:55:27.04ID:XTjqDow2
>>909
GLUTは mainLoopで再帰無限ループしてるけど、今のところオーバーフローでエラーした経験はない
0912デフォルトの名無しさん2015/01/03(土) 22:21:20.47ID:INvsCKDt
>>909
末尾再帰になるように書けばいいよ
0913デフォルトの名無しさん2015/01/03(土) 22:25:08.41ID:gBJh/h4v
>>910
そういうのです。しかし、ひょっとして、メーカー非公認なのかな(モグリ)
なのかなと思いまして。
09149092015/01/03(土) 22:30:54.80ID:+skQnDmf
>>912
末尾再帰で検索したらサンプルが見つかりました。書き方が違うのですね。
試してみます。ありがとうございました!
0915デフォルトの名無しさん2015/01/04(日) 03:31:52.05ID:wAnmZa29
>>913
プログラミング言語に著作権はない(仕様書や処理系にはある)
あったとしても言語利用者がプログラムを公開するのに許諾を得る必要があるかと言うと?
それもあったとしてもJavaScriptを作ってる人達はそんなことを要求する人達じゃない
0916デフォルトの名無しさん2015/01/04(日) 07:01:59.39ID:A29gOAzW
emacsの設定
分かりやすいサイト
てありますか?
教えていただけますか?
0917デフォルトの名無しさん2015/01/04(日) 08:47:57.21ID:XhHDaIDm
>>916
同じ人だとしたら、もうキミはemacsの設定は諦めたらいいんじゃないかな。その時間でプログラムを書いた方がいいよ。
emacsだけがエディタじゃないしね。
0918デフォルトの名無しさん2015/01/04(日) 09:58:38.34ID:Y5zWrD8V
e


0919デフォルトの名無しさん2015/01/04(日) 10:26:44.87ID:1ErtEbM3
>>915
スクリプト言語自体の話ではないと思うよ。

JITコンパイラとかレンダリングエンジンの類の話でしょ。
こちらは特許をとることもできる。
0920デフォルトの名無しさん2015/01/04(日) 10:38:44.02ID:JYhmrr12
haskell ってデフォルトの vi(m) でまぁまぁラクに書けるのが嬉しい。
入力モードで Ctl-F を入力すると4つ空白を補完するショートカット的機能は追加したけど。
0921デフォルトの名無しさん2015/01/04(日) 10:38:59.86ID:1ErtEbM3
>>906
元の質問をよく読んでみると、その意図が分からなくなったんだが、
ライセンスってどういう意味?

javascriptエンジンなんてもう特許でガチガチに固められてて、
アマチュアが作れる余地ないですよね? どうなんでしょう?
という質問かと勝手に解釈してたんたが。

だから、いやまだ余地あるよ、だってオープンソースのもあるし、と。

もしかして、俺は勘違いしてた?


まぁ何にせよ、スレチも甚だしいから、この辺でレスは止めるが。
0922デフォルトの名無しさん2015/01/04(日) 10:42:36.23ID:JYhmrr12
それに対して lisp だけは emacs が必須だな。
0923デフォルトの名無しさん2015/01/04(日) 11:00:57.74ID:ApkpjYBh
>>920
んなことしなくてもタブ設定でどうとでもなるぞ
0924デフォルトの名無しさん2015/01/04(日) 12:08:11.58ID:1ErtEbM3
esqueleto で、select した結果に対して更に select するにはどうすればいい?

具体的には、昇順の上位5件の行を取得したく、
テーブルを一度降順に並べて5件取り、その結果のテーブルを昇順に戻したい。

並び替えるだけなら、haskell の方でリストに sort かければいいだけだが、
それは応用が効かないその場しのぎの方法だから、できれば esqueletoでやりたい。
0925デフォルトの名無しさん2015/01/04(日) 14:50:18.16ID:aCgp4owN
>>922
on lispのpaul grahamとlet over lambdaのdoug hoyteは
vimじゃないviで書いてるらしい
0926デフォルトの名無しさん2015/01/04(日) 15:21:12.93ID:TjT1k62E
>>923 タブをスペースに展開したりする設定を入れるとタブが使えなくなるか切り替えが面倒だし。。。
>>925 と知って真似したことがあるけど、直ぐにギブアップしました。w ACL 付随の elisp を使ってます。
>>778 これ良さそうかも。試してみる。
0927デフォルトの名無しさん2015/01/04(日) 22:26:28.96ID:3J538RJZ
stylish-haskellもそれなりに便利
0928デフォルトの名無しさん2015/01/04(日) 22:41:05.52ID:dnput2K7
sublimetextとかatomとか使ってる人いる?
0929デフォルトの名無しさん2015/01/05(月) 12:39:38.40ID:56v1L+Z7
「リストの奇数番目の要素だけ返す」みたいなことをする場合ってどうやるのが普通?
とりあえず考えたのは[0..]とzipしてfilterする方法だけど,なんか回りくどいような気もする

目的としては,テキストファイルを一行おきに出力したいんだけど
0930デフォルトの名無しさん2015/01/05(月) 12:58:02.09ID:wTsbYt9I
emacs の設定さん (>>916 が過去とおなじひととして)は諦めるのも手だけど、
何をしたくてどううまく行ってないのかを整理してここでなく emacs 界隈に聞きに行くのがお勧めだ
2ch でも stackoverflow でも lingr でもなんでもいいとおもうから

で、「究極の設定にならない」っていううまく行かなさならそれは最初からそれを目指すべきじゃない
使いながら不満を解消していくのが良いよ
0931デフォルトの名無しさん2015/01/05(月) 13:29:35.01ID:r5Vta5Zs
How to install latest GHC 7.8.3 + cabal 1.20.3 on Ubuntu
https://gist.github.com/yantonov/10083524
0932デフォルトの名無しさん2015/01/05(月) 13:31:02.02ID:PY+NF+zg
>>929
普通は副作用とヌルがあるから IO (Maybe String)
でも普通の常識を疑うためにHaskellやってるんだろ?
0933デフォルトの名無しさん2015/01/05(月) 13:38:45.45ID:rVk7ZNEd
>>929
その方法が一番いい。

1. 素直な方法なので実装しやすくバグが入りにくい。
2. 空リストを考慮しなくてもよく場合分けが必要ない。
3. プログラムソースが見やすく何を求めているのかがよく分かる。
4. 奇数番目だけでなく、x 行おきの場合にも対応でき応用が利く。
0934デフォルトの名無しさん2015/01/05(月) 13:54:22.37ID:UJnBa08N
>>929
リスト走査を1度ですませたいなら融合変換すればよいのでは.
0935デフォルトの名無しさん2015/01/05(月) 13:57:36.10ID:56v1L+Z7
>>932
いやあ,ちょっとした使い捨て的な処理なので,そんなに真面目に例外処理を考えてなかったです

>>933
ひどく効率が悪いとか,そういうことはないんですね
じゃあ初心者としてはわかりやすさ優先でいっときます
なんかこう
s <- getContents
putStr $ unlines $ map fst $ filter (odd . snd) $ zip (lines s) [0..]
みたいな感じで
0936デフォルトの名無しさん2015/01/05(月) 14:03:41.15ID:56v1L+Z7
>>934
融合変換って初めて聞きました
ちょっと勉強してみます
0937デフォルトの名無しさん2015/01/05(月) 14:25:19.60ID:rVk7ZNEd
>>934
>>929 の方法でも走査は一度きりなんだが・・・
0938デフォルトの名無しさん2015/01/05(月) 15:00:51.08ID:1xEaC2gz
>>930
一度も具体的な話が出てこないから、Botだと思いますよ。
0939デフォルトの名無しさん2015/01/05(月) 15:18:52.82ID:r5Vta5Zs
Data.Bits.FiniteBitsありがたや
0940デフォルトの名無しさん2015/01/05(月) 15:18:54.70ID:v9pP0JGy
haskellスレは群雄割拠!原発荒らしやemacs荒らし、上から視線のニートもどき、荒ぶる信者も渾然一体!
0941デフォルトの名無しさん2015/01/05(月) 15:51:07.05ID:OMSF4NSh
>>930
これは同感
エディタとかで最初から最高の環境目指すと考えすぎで止まってしまう
0942デフォルトの名無しさん2015/01/05(月) 15:59:36.20ID:UJnBa08N
>>937
zipで一回,filterで一回,計2回ではないでしょうか?
0943デフォルトの名無しさん2015/01/05(月) 16:26:46.03ID:rVk7ZNEd
>>942
あぁ走査って、リストの要素数 n に対して、
zip の計算量 n、filter の計算量 n とすると、
全体で 2n の計算量になる、と言う意味なのか。
勘違いしてた。

でもそれだと今度は、融合変換しても走査数は変わらないのでは?
融合変換って、中間データ構造(今の問題ならタプル)を消すことでしょ。
0944デフォルトの名無しさん2015/01/05(月) 16:29:22.31ID:UJnBa08N
>>943
中間リストがなくなればその分の走査が減るとおもいます.
0945デフォルトの名無しさん2015/01/05(月) 17:05:16.52ID:4q+Qt2eN
どうもemacsです
アドバイスありがとうございました
0946デフォルトの名無しさん2015/01/05(月) 17:43:05.75ID:rVk7ZNEd
>>944
中間リストって、filter が作る中間リスト?

zip が作る [(String, Int)] に対して「ひとつおきに取り出す処理」は、
あなたの言う走査には含まれない?

融合変換で中間リストが消えて走査数が減ると言うのなら、元々の操作数は、

1. zip が引数のリストを分解する
2. zip がリストを作る
3. filter がリストを分解する
4. filter がリストを作る

の 4 つで、そのうち 2 と 3 が消えて 2つになるのでは?

あるいは、zip は「2つのリスト」に対して処理するから、
元々の走査数は zip 2、filter 1 で計 3 つになるとか?

走査数の意味がイマイチ分からなくなった。
何を以て走査数と言ってる?
0947デフォルトの名無しさん2015/01/05(月) 18:31:50.63ID:UJnBa08N
>>946
oddElems :: [a] -> [a]
oddElems = filter' snd (odd . fst) . zip [0..]
filter' _ _ [] = []
filter' f p (x:xs) = if p x then f x : filter' f p xs
このとき,oddElem の入力となるリストを es.その長さを n = length es とします.
zip [0..] は関数で,この関数が結果のリスト全体を作成するには es の全要素を辿ります.
zip [0..] es が生成するリストを es' とすると,そのは長さは es の長さと同じ n です.
filter' snd (odd . fst) es' は結果のリスト全体を生成するのに es の全要素を辿ります.
融合変換して es' という中間リストがなくなれば,辿るべきリストが1つ減っていることが期待できますよね.
0948デフォルトの名無しさん2015/01/05(月) 18:48:33.68ID:UJnBa08N
訂正 es → es'
filter' snd (odd . fst) es' は結果のリスト全体を生成するのに es' の全要素を辿ります.
0949デフォルトの名無しさん2015/01/05(月) 18:49:41.11ID:UJnBa08N
中間リストといっているのはzip [0..] が生成するリストのことです.
0950デフォルトの名無しさん2015/01/05(月) 19:20:48.83ID:rVk7ZNEd
>>947
そもそも遅延評価だから、zip に 1回、filter に 1 回というたどり方はしなくて、
走査の定義をハッキリさせておかないと非常にややこしくなるんだが・・・

リストに対する融合で消えるのはあくまで、
「リストの作成」とその直後の「リストの分解」という一対の処理だけだよ。

zip が行う「タプルを作る処理」や filter が行う「奇数番目かどうか判定する処理」は消えない。
この 2 つの処理が全体で何回行われるかというと、融合されようが、されまいが、
きっちり最初に zip に渡されたリストの要素数分だ。
減りも増えもしない。
(正確には、結果のリストをどう評価するかによるが)

融合によってリストの作成分解処理が一対消えるから、
この処理のことを走査と言うのなら確かに走査数は減ることになる。

タプルの作成や奇数判定も走査の中に含めるのなら、走査数は変わらんよ。

で、俺は走査と言えば、たとえば GCC は C 言語の構文解析を一度スキャン(走査)で行える、
とかいう時のスキャンのイメージがあるから、それなら zip と filter の組み合わせは
リストに対して一度のスキャンで行える、と言ったんだ。
遅延評価だから二度もスキャンする必要はないからね。
0951デフォルトの名無しさん2015/01/05(月) 19:47:30.17ID:UJnBa08N
走査という曖昧な言葉をつかったのが失敗でした.
中間リストの生成を除去するといえばよかったですね.
0952デフォルトの名無しさん2015/01/05(月) 20:19:28.54ID:UJnBa08N
oddElems :: [a] -> [a]
oddElems = filter' snd (odd . fst) . zip [0..]

filter' snd (odd . fst) . zip [0..]
⇔ { zipp = uncurry zip とする }
filter' snd (odd . fst) . zipp . (,) [0..]
⇔ { addifodd (i,x) xs = if odd i then x:xs eles xs とする }
foldr addifodd [] . zipp . (,) [0..]
⇔ { phipair (xxs,yys) = if null xxs || null yys then Nothing else Just ((head xxs,head yys),(tail xxs, tail yys)) とする }
foldr addifodd [] . unfoldr phipair . (,) [0..]
⇔ { hylo f e phi x = case phi x of {Nothing -> e; Just (y,z) -> f y (hylo f e phi z)} とする }
hylo addifodd [] phipair . (,) [0..]

まちがえてなければ,これで融合変換できたことになると思います.
oddelems = hylo addifodd [] phipair . (,) [0..]
0953デフォルトの名無しさん2015/01/05(月) 21:13:52.44ID:KI3U0yKn
なにこれ怖い
0954デフォルトの名無しさん2015/01/05(月) 21:34:27.09ID:rVk7ZNEd
>>952
内容は調べていないから融合できているかは知らんが、
何のために融合しようとしているの?
本末転倒になってはいないか?

適当なテストプログラムを書いてコンパイルし、
RTS オプション の -s を付けて実行して処理時間を測ってみ。
素直に filter と zip を使った方が速いから。

と言っても、かなり大きなリストで試さないと差は見えてこないから、
>>929 の使い方なら実用上どちらを使っても変わらんが。
0955デフォルトの名無しさん2015/01/05(月) 21:49:58.07ID:rVk7ZNEd
>>952
ちなみに、それよりも >>947 の方法の方が速い。

また、ヒープ領域の使用量も速さと同じ結果。
素直に実装した方が少ない使用量で済む。
0956デフォルトの名無しさん2015/01/05(月) 22:23:19.50ID:JId0mbKZ
なんか今の2chってHaslkellで書かれてるらしいじゃん
0957デフォルトの名無しさん2015/01/05(月) 23:47:34.38ID:mLtk6pyN
>>956
マジすか?
0958デフォルトの名無しさん2015/01/06(火) 00:02:57.77ID:WjhpL2zQ
>>954

そもそも,計算量オーダーが同じならコードがわかりにくくなった分,劣化してる可能性大ですねぇ.
0959デフォルトの名無しさん2015/01/06(火) 00:35:30.77ID:WjhpL2zQ
interact (show . length . unlines . oddelems . lines)
の処理と unlines . oddelems . lines の部分を融合変換したもの
interact (show . length . hylo addifodd "" numlines)
の処理とを比較してみました.63469440行ある単語データファイル(600MB)を食わせてみたところ
手元の計算機でかかった時間は以下の結果
前者はTotal time 33.59s ( 34.20s elapsed) %GC time 14.6% (24.5% elapsed)
後者はTotal time 27.87s ( 28.38s elapsed) %GC time 7.5% (19.7% elapsed)
IO部分の時間を図ってないのでなんともいえないですが,この場合は差がでるようにみえますね.
コンパイルオプション-O2
0960デフォルトの名無しさん2015/01/06(火) 00:37:44.25ID:WjhpL2zQ
たいした差じゃないともいえるかもしれませんね.
0961デフォルトの名無しさん2015/01/06(火) 00:45:53.98ID:WjhpL2zQ
1つめの処理の oddelems は oddElems のまちがい.
2つめの処理は
interact (show . length . hylo addifodd "" numlines . (,) [0..])
のまちがい.

numlines (_,[]) = Nothing
numlines (i:is,xs) = case break ('\n'==) xs of {
(ys,_:zs) -> Just ((i,ys),(is,zs));
(ys,[]) -> Just ((i,ys),(is,[]))}
0962デフォルトの名無しさん2015/01/06(火) 07:12:15.34ID:1NZMwfJD
>>959
それはなによりです
[0..]とzipしてfilterする方法では回りくどくないかなと心配してた>>929もさぞ喜んでいることでしょう
0963デフォルトの名無しさん2015/01/06(火) 09:21:05.66ID:Ap0lJ8Jt
>>945
haskellでタダシの心と身体を守るんだぞ
0964デフォルトの名無しさん2015/01/06(火) 09:58:56.58ID:iarVVv2t
Haskell って教科書通りの分かりやすいコードを書けば,意外とそれだけでいける場合が有るんだな.
トイコードで書けるような小さいものを相手にしてる場合はいいけど,
データ量が多くなるとすぐにダメになって,参照型とかモナドのオンパレードにしないといけないのかと思ってた.
0965デフォルトの名無しさん2015/01/06(火) 10:00:05.28ID:iarVVv2t
ビックデータと絡めるような試みは有るんかな.調べてみるか.
0966デフォルトの名無しさん2015/01/06(火) 10:29:48.03ID:+nyULczy
http://dev.stephendiehl.com/fun/
0967デフォルトの名無しさん2015/01/06(火) 12:42:53.16ID:4YMDVwAo
リストを扱うならなるべくData.Listの関数を使った方がいい
Rulesプラグマで融合変換して中間リストを除去してるから
自分で再帰を書いたらその部分がボトルネックになる
0968デフォルトの名無しさん2015/01/06(火) 14:31:17.60ID:gN1CYWxI
自分で再帰書いたら中間リストのないコードになるのでは。

まあ融合変換は現実的には自分の手でやるもんじゃないよね。

ところで>>959の差ってどこで生まれてるんだろ?
zip して filter は素のリストだと融合変換してくれないの?
unlines のところの中間リストの違い?
http://hackage.haskell.org/package/stream-fusion-0.1.1/docs/Data-List-Stream.html
とかを使うと変わるかな?
0969デフォルトの名無しさん2015/01/06(火) 17:57:28.03ID:1NZMwfJD
>>968
filter が優良生産者として実装されているから、
同じく優良生産者として機能しているときの zip に続けても融合されない、
ということでは?
http://www.kotha.net/ghcguide_ja/latest/rewrite-rules.html#idm140193846702112
0970デフォルトの名無しさん2015/01/06(火) 19:30:02.76ID:gN1CYWxI
>>967
ああ、他の Data.List 関数と一緒に使うならそうか。

>>969
ソース読めって書いてあるとおり読んでみると、
build を使ってれば優良生産者で foldr を使っていると優良消費者で、
両者になるのは同時に可能ってことだと思うんだけど。
0971デフォルトの名無しさん2015/01/06(火) 20:06:42.53ID:NJ/kfRzj
>>959のコードと普通に書いたコードの速度比較した

テストデータの生成に使ったコード: http://codepad.org/2Qljhutm

(1) >>959のコード1つ目 : http://codepad.org/Guy2CswB
(2) >>959のコード2つ目 : http://codepad.org/S3DdUiGL
(3) 素直にData.Listの関数だけで書く : http://codepad.org/7SZtvyJ9

実行結果
 (1) Total time 25.02s (25.65s elapsed) %GC time 19.9% (19.8% elapsed)
 (2) Total time 23.05s (23.62s elapsed) %GC time 22.0% (21.8% elapsed)
 (3) Total time 24.45s (25.06s elapsed) %GC time 20.3% (20.4% elapsed)

>>967で書いた通り、自分で書いた再帰をData.Listの関数と一緒に使うと遅くなる
ほとんど差は無いので手で融合変換する手間を考えたら素直にData.Listの関数だけで書いた方がマシ


以下はおまけ
 (4) Text + ByteString : http://codepad.org/WcNZH4zD
 (5) Text + ByteString + Vector : http://codepad.org/5lAwD8PI

実行結果
 (4) Total time 13.61s (14.18s elapsed) %GC time 2.9% (3.4% elapsed)
 (5) Total time 2.21s ( 2.68s elapsed) %GC time 2.2% (2.2% elapsed)
0972デフォルトの名無しさん2015/01/06(火) 20:43:09.13ID:gN1CYWxI
ああ、filter' というのを使ってたんだ。
融合変換はちゃんとされてると。
でも差は意外と無かった?
0973デフォルトの名無しさん2015/01/06(火) 21:27:05.66ID:1NZMwfJD
>>970
ごめん、自分でリンク貼っておいて見落としてた。

filterは優良生産者であると同時に優良消費者でもあった。
0974デフォルトの名無しさん2015/01/06(火) 21:35:49.65ID:1NZMwfJD
>>972
融合変換と言っても、トイプログラムや日常のちょとしたスクリプト程度ではあまり意味ないかもね。
Repaみたいな、ああいったもので本当に活きてくる、というかなくてはならない存在だと思う。
0975デフォルトの名無しさん2015/01/06(火) 21:52:22.72ID:0YpM91P0
needleってなんだよ! ふざけてんのか!
0976デフォルトの名無しさん2015/01/06(火) 22:06:08.57ID:WLnq9lHu
尖ってんだよ
0977デフォルトの名無しさん2015/01/06(火) 22:08:58.99ID:1NZMwfJD
>>975
全く役にはたたんが、こういう発想ステキ
0978デフォルトの名無しさん2015/01/07(水) 07:46:09.67ID:gDzpAQ9k
Control.Lensで指定したビットフィールドを取り出す演算子(.#.)をつくったところ
"bfget"の型がどうなっているのかわからなくなってしまいました。
お知恵をお借りしたく... (ghc version 7.6.3, lens-4.3.3)
--------------------
{-# LANGUAGE TemplateHaskell #-}
module A where

import Control.Lens (ALens',makeLenses,cloneLens,lens,to,(.~),(%~),(&),(^.))
import Data.Word (Word32,Word64)
import Data.Bits (Bits,FiniteBits,complement,shiftL,shiftR,rotateL,(.|.),(.&.))
import Test.HUnit (Test,test,runTestTT,(~=?))

data Regs = Regs { _r0 :: Word32, _r1 :: Word64 } deriving (Show, Eq)
$(makeLenses ''Regs)

(.#.) :: (Functor f, FiniteBits a, Bounded a, Integral a) =>
ALens' Regs a -> (Int, Int) -> ((a -> f a) -> Regs -> f Regs)
(.#.) r (lsb, nbits) = let
-- ??? bfget :: Integral a => Regs -> a
bfget rs = rs ^. (cloneLens r) . to (flip shiftR lsb . (.&. complement mask))
bfset :: Integral a => Regs -> a -> Regs
bfset rs x = rs & (cloneLens r) %~ \ w -> (mask .&. w) .|. (complement mask .&. shiftL (fromIntegral x) lsb)
mask :: (Bits a, Bounded a) => a
mask = flip rotateL lsb $ shiftL maxBound nbits
in lens bfget bfset
0979デフォルトの名無しさん2015/01/07(水) 07:46:43.21ID:gDzpAQ9k
>>978のつづき

main = runTestTT $ test [
(rs & r0 .#. (4,16) .~ 0xcafe) ^. r0 .#. (4,16) ~=? 0xcafe
, (rs & r0 .#. (8,24) .~ (rs ^. r0 .#. (8,24))) ~=? rs
, ((rs & r0 .#. (0,32) .~ 0xabadcafe) & r0 .#. (0,32) .~ 0xdeadbeaf) ~=? rs {_r0=0xdeadbeaf}
, (rs & r1 .#. (4,16) .~ 0xcafe) ^. r1 .#. (4,16) ~=? 0xcafe
, (rs & r1 .#. (8,24) .~ (rs ^. r1 .#. (8,24))) ~=? rs
, ((rs & r1 .#. (0,64) .~ 0xabadcafe) & r1 .#. (0,64) .~ 0xdeadbeaf) ~=? rs {_r1=0xdeadbeaf}
]
where rs = Regs {_r0 = 0x01234567,_r1=0x0123456789abcdef}
0980デフォルトの名無しさん2015/01/07(水) 10:16:03.90ID:gDzpAQ9k
>>978-979 のLambda pastebinです。
http://lpaste.net/117957
0981デフォルトの名無しさん2015/01/07(水) 18:26:38.49ID:ia1dpi4p
オライリーの表紙がカブトムシなのは何でなんだ?
perlのラクダ、pythonの蛇のようにマスコット?
レス数が950を超えています。1000を超えると書き込みができなくなります。