トップページtech
1001コメント315KB

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

レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん2013/10/25(金) 21:54:29.92
関数型プログラミング言語 Haskellについて語るスレです。

前スレ: 関数型プログラミング言語Haskell Part23
http://toro.2ch.net/test/read.cgi/tech/1376111807/

haskell.org
http://www.haskell.org/

日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
http://www.shido.info/hs/

過去ログ (10〜)
Part21 ttp://toro.2ch.net/test/read.cgi/tech/1358702176/
Part20 ttp://toro.2ch.net/test/read.cgi/tech/1350428908/
Part19 ttp://toro.2ch.net/test/read.cgi/tech/1340760070/
Part18 ttp://toro.2ch.net/test/read.cgi/tech/1331902463/
Part17 ttp://toro.2ch.net/test/read.cgi/tech/1325510368/
Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/
Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/
Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/
Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/
Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/
Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/
Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/
0951デフォルトの名無しさん2014/02/23(日) 10:37:06.51
事故さえ起こらなければ正論だよね
0952デフォルトの名無しさん2014/02/23(日) 11:37:56.80
いずれ戦争が起こるわけですが、勝負になる程度まで軍備を進めると
原発が狙われるんじゃないでしょうか。
逆に日本は原発を狙うことなく負けることができるでしょうか。
0953デフォルトの名無しさん2014/02/23(日) 11:40:26.72
なんでこのスレこんな気持ち悪い感じになってんの?
0954デフォルトの名無しさん2014/02/23(日) 11:41:36.42
>>936
何かを実現したい時、大抵はアプローチ候補が複数有る。
Haskellは、複数のアイディア実装間の比較が楽なので、端から見てると入れ替わりが激しいように見えてしまう。
0955デフォルトの名無しさん2014/02/23(日) 11:44:48.58
諸君、議論をしたまえ(代理)
0956デフォルトの名無しさん2014/02/23(日) 12:03:17.57
>>954
> 複数のアイディア実装間の比較が楽なので

何を基準にどう比較する場合の話?

処理速度やメモリの使われ方を基準にするなら、C言語などの方が測りやすいと思うから、
たぶんもっと別の基準だと思うが・・・
0957デフォルトの名無しさん2014/02/23(日) 13:12:25.55
954はいつもの人だろ
0958デフォルトの名無しさん2014/02/23(日) 14:14:30.22
>>956
cは不動の地位。HaskellはPython、Rubyの座を奪う。
というより、PythonやRubyで何かを書きたくない。
0959デフォルトの名無しさん2014/02/23(日) 14:24:45.75
>>958
何を基準にどう比較するかを説明して欲しいんだけど


> ythonやRubyで何かを書きたくない
単なる個人的な感情は今はどうでもいい
0960デフォルトの名無しさん2014/02/23(日) 15:34:55.75
QuickCheck で要素が自然数のリストをテストデータとして生成したいのだけど、
これは生成器を自作しないとできない?
それとも、Test.QuickCheck モジュール内の関数を組み合わせて作れる?
09619602014/02/23(日) 15:38:46.97
>>960
念の為、生成器のデータ型を [Data.Word.Word32] にするという話ではなくて

生成器のデータ型は [Integer] です
0962デフォルトの名無しさん2014/02/23(日) 16:27:52.13
>>960
[NonNegative Integer]型の生成器を使えば良い
09639602014/02/23(日) 17:43:08.33
>>962
こんな型が Test.QuickCheck モジュールにあったのか
完全に見落としてたわ

ありがと
09649602014/02/23(日) 17:56:31.74
ところで、NonNegative の Arbitrary インスタンスの
arbitrary 関数の定義がこんなことになってるんだが

 arbitrary =
  (frequency
    -- why is this distrbution like this?
    [ (5, (NonNegative . abs) `fmap` arbitrary)
    , (1, return (NonNegative 0))
    ]
  ) `suchThat` ge0
  where ge0 (NonNegative x) = x >= 0

これは、一様分布に対して 0 が現れる割合を増やしてるんだよね
なんか意味あるんかな?

わざわざ suchThat で 0 以上を保証する意味も分からん
もともと abs で0以上の値を生成しているのでは?
0965デフォルトの名無しさん2014/02/23(日) 20:02:09.91
自然エネルギーとか、原発止まってるけど大丈夫じゃん、とか言ってるけど、現状LNG燃やすしかないんですよ。即時停止とはこういうことだ。
0966デフォルトの名無しさん2014/02/23(日) 20:23:15.35
>>965
だったら燃やせよ
ロンドン条約締結後に堂々と放射性物質をみんなの海にばらまいた日本国に、何か、燃やしちゃいけない理由でもあるの?
0967デフォルトの名無しさん2014/02/23(日) 20:26:57.82
     ;:;:;.
     ;:;:;              ,、-ー-、              ど
     ;:;:            ,r'"´ ̄`ヾ、             明  う
     ;:;:.            リ ,,, ニ ,,,_ ヾト、            る  だ
     :;:;:;.             ,ハ ^7 ,^   !.:.\          く
     ;:;:;:           /.:.:.V,r''''''ゞyイ.:.:.:.:..ヽ       な
     ;:;:.         ノ.:!:.:.:.:`ゞ-<7.:〉.:.:.:i.:.:}   ろ  っ
     从 __  _,,,/.:.:/:.:.:.:.:.:| }-{/i.:/.:.:.:.:|.:/     う  た
      从从百円}と_」.:/!.:.:.:.:.:.:.!  ̄ リ.:.:.:.:.:り     ?
         ̄ ̄    ̄  |.:.:.:.:.:./_ :__ヽ.:.:.:.:\
                \/.:.::..:.:.:.:.:.:..:\:.::./
                /.:.:.:.:.:.:.「^Y.:.:.:.:.:.:|´
                 {.:.:.:.:.:.:.:.| ,!.:.:.:.:.:.:|
                  \.:.:.:.:.:.V.:.:.:.:.:.:.:|
                  \.:.:.::|.:.:.:.:.:.:.:!
                    > 'ゝ─‐イ、
                    `ー' ``''ー‐'
0968デフォルトの名無しさん2014/02/23(日) 22:03:29.07
>>964
確かに謎だな
前者は0が明らかなコーナーケースだからかも
後者はabsが0未満を返すような変なNumインスタンスへの対応?
09699682014/02/23(日) 22:05:43.08
変な、というかIntがそうだった
Prelude> abs (-9223372036854775808::Int)
-9223372036854775808
0970デフォルトの名無しさん2014/02/23(日) 22:44:32.21
有害な物質が1粒でも入ってると危険だと思ってしまう科学音痴。それが日本人。
0971デフォルトの名無しさん2014/02/23(日) 22:47:00.21
ベクレルってのがなんの物理量かもわかってない輩が、わあこの食品からnベクレルも検出されたんですって!
こわい!とか言いながらラジウム温泉につかるのが日本の原風景
0972デフォルトの名無しさん2014/02/23(日) 22:47:50.10
消えろカス
0973デフォルトの名無しさん2014/02/23(日) 22:56:30.12
>>970
日常に有害に物質があふれてて、そこに加わる有害物質を入れるかどうか、という前提をなぜ抜かす?
0974デフォルトの名無しさん2014/02/23(日) 23:47:54.71
俺は結構電力会社の安全PRとか信じてた方だから、5重の壁とか、何十もの
安全装置とかあるから大丈夫と思ってたので、あんなにあっさり停電で冷却装置
止まってメルトダウンしたり、建物が大爆発したのは結構ショックだったな。
子供の頃から見せられてたアレはいったいなんだったのという。
0975デフォルトの名無しさん2014/02/23(日) 23:54:20.67
ここで床屋政談してる人なんなの…
ちょっと不気味なんだけど
0976デフォルトの名無しさん2014/02/24(月) 00:29:07.30
電力会社は放射性物質の代金を請求してもいい頃合い。
今まで無料だと思って浴びまくってた人は青くなれ。
0977デフォルトの名無しさん2014/02/24(月) 05:43:22.06
>>970
すごくお馬鹿な詭弁の入り口
09789682014/02/24(月) 06:33:45.41
スレ違い
0979デフォルトの名無しさん2014/02/24(月) 09:25:42.85
ああすれ違い
0980デフォルトの名無しさん2014/02/24(月) 11:27:37.92
>>966
燃料の価格高騰で倍以上のコストかかってるし、
結果的に (原発を持たない) 後進国に燃料がまわらず、
かなり反感をもたれてしまってる。
0981デフォルトの名無しさん2014/02/24(月) 12:11:39.04
>>980
だから・・・
を連想させようとする
あったま悪いやりかただな

大衆相手にしたろカス
0982デフォルトの名無しさん2014/02/24(月) 12:14:57.46
>>980
で?
0983デフォルトの名無しさん2014/02/24(月) 13:55:37.97
「毎年交通事故でたくさんの人が死んでいます
なので車は廃止しましょう」ぐらいの意見と思われているのかな
0984デフォルトの名無しさん2014/02/24(月) 14:24:31.02
みんな自己責任が大好きだから自家用車がよく売れるんだよ
原子力が嫌われないためには自家用原子炉を売るか自己責任システムを廃止するしかない
0985デフォルトの名無しさん2014/02/24(月) 17:13:19.43
つまり、静的型のコンパイラは大きすぎて自己責任で保守できるレベルを超えていると
0986デフォルトの名無しさん2014/02/24(月) 17:14:43.53
全く関係ないHaskellスレに政治の話を持ち込むような異常者がみんな死ぬまでは、あらゆる問題を棚に上げといた方が人類の為になりそうだな
0987デフォルトの名無しさん2014/02/24(月) 18:17:31.94
Haskellは原発会社から資金を貰っているから仕方ない
09889602014/02/24(月) 19:55:26.04
>>969
どうも、Int の Num クラスのインスタンス定義の negate が原因っぽい

より正確に言えば、

instance Num Int where
 negate (I# x) = I# (negateInt# x)
 abs n = if n `geInt` 0 then n else negate n

の negateInt# 関数がおかしいみたい(それ以外に怪しいところが見当たらない)
ただ、残念ながら negateInt# の定義が追求できなかった

ちなみに、Int32 や Int16 なども negate の定義に negateInt# を使ってるから、
たとえば以下のようになる

> -2^31 :: Int32
> -2147483648
> negate (-2^31 :: Int32)
> -2147483648

これはバグなのか仕様なのか・・・

クソ、英語をちゃんと身につけておくべきだった
バグにしろ仕様にしろ、報告できるのに
0989デフォルトの名無しさん2014/02/24(月) 20:01:02.78
>>980
後進国が原発を持てないのは、日本がウランを買ってるからですよ
0990デフォルトの名無しさん2014/02/24(月) 20:07:20.12
>>988
仕様だろ
2^31はInt32では表現できないから、オーバーフローして-2^31になる
Intでも同様
09919602014/02/24(月) 20:13:50.11
>>990
あぁ、そういうことか、納得

おかしいのは俺の頭だった
穴があったら入っとくわ


後は、0 が現れる割合を増やしてる理由だが、
これは何故か作者本人も why って言ってるもんなぁ
どうしようもないか
09929602014/02/24(月) 20:17:13.36
>>968
ごめん、0が明らかなコーナーケースだと、なんで割合を増やすの?
09939602014/02/24(月) 20:20:31.06
>>992
あぁ、分かった

これ単なる汎用的な非負整数型ではなくて、
あくまで QuickCheck のテストに使うための非負整数型だから、
「0がコーナーケースとなりうる」 --> 「0がよくテストされるように頻度をあげとこう」
ということか

0が出まくっても問題だから、まぁだいたいこの割合にするよ、と


すっきりた
半分以上一人で騒いでいたような気もするが、
アドバイスくれた人たちに感謝するよ、ありがと
0994デフォルトの名無しさん2014/02/24(月) 20:30:16.39
普通は境界から叩きます
09959602014/02/24(月) 21:02:21.24
>>994
だよね、忘れてた


何が境界となりうるかはテストによって変わるから、
QuickCheck のデフォルト100回のテスト中に、
あるリスト内のテストデータは必ずテストされる(あとはランダム)
ということが簡単にできる仕組みがライブラリにあっても良さそうだが・・・
0996デフォルトの名無しさん2014/02/24(月) 22:26:30.10
id $ id $ id $ id $ 1 -- (1)
id id id id 1 -- (2)

上のidのように適用順(1)(2)の評価結果が同じになる
任意の関数fは作れますか?できないならそれはなぜですか?
09979962014/02/24(月) 22:45:53.53
あ、評価結果は同じじゃなくて大丈夫です。コンパイルできればおkです
0998デフォルトの名無しさん2014/02/24(月) 22:48:14.86
もうすぐ1000
0999デフォルトの名無しさん2014/02/24(月) 23:17:05.94
次スレは?
1000デフォルトの名無しさん2014/02/24(月) 23:17:56.25
1000なら原発再稼働
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。