関数型プログラミング言語Haskell Part34 (667レス)
上下前次1-新
1(1): 2021/12/17(金)12:57 ID:NPioGyUL(1/4) AAS
関数型プログラミング言語 Haskell について語るスレです。
Haskell Language(公式サイト)
外部リンク:www.haskell.org
日本Haskellユーザーグループ - Haskell-jp
外部リンク:haskell.jp
前スレ
関数型プログラミング言語Haskell Part33
2chスレ:tech
541(1): 2024/10/08(火)16:34 ID:uOPPJ/Hn(1/2) AAS
圏論好きはHaskellよりCPLで幸せになれる
542(1): 2024/10/08(火)19:19 ID:fXGz3G0z(1/2) AAS
>>529
集合と写像って違うんですか?写像って集合ではなかったですか?
543(1): 2024/10/08(火)19:24 ID:u3fJk7wa(1) AAS
>>541
CPLとは?kwsk
544(1): 2024/10/08(火)19:35 ID:i8KKt4Pq(1) AAS
>>542
反対向きは成り立たないよ
彼はラムダ項みたいなただの集合も関数だとか言ってたんだよ
545: 2024/10/08(火)20:00 ID:fXGz3G0z(2/2) AAS
>>544
なるほど。勉強になります。
546(1): 2024/10/08(火)20:58 ID:uOPPJ/Hn(2/2) AAS
>>543
CPL (圏論プログラミング言語)
外部リンク:ja.m.wikipedia.org
547: 2024/10/08(火)21:59 ID:fIGAPb3c(1) AAS
CPL使ったことは一度もないが
関手圏よりもっとややこしい圏で、モナドより凡庸なものを定義するんでしょ
548: 2024/10/08(火)23:08 ID:Fz/Eetv9(1) AAS
こんなんだけど
>通常では,自然数などのデータ型は,効率のためにシステムに組込んであるが,CPLでは定義しなければならない.
>また,定義したとしても,機械本来の足し算,かけ算を使用できず,独自に定義しなければならない.
549: 2024/10/09(水)00:11 ID:NBQjGpZO(1) AAS
O'CAMLのCAMLはCategorical Abstract Machine Languageの略ということを忘れてはかわいそう。
550: 2024/10/09(水)20:31 ID:UpCIlB6y(1) AAS
>>546
Thenks!!
551: 2024/10/12(土)20:07 ID:fyUcodga(1) AAS
初心者はStack、ガチムチはCabalで開発するんですか?
552: 2024/10/15(火)05:30 ID:CzVFQLgH(1) AAS
みんなStackだよ
Cabalの依存関係解決はましになったとはいえプロジェクト構成の記述はStackのほうがよくできてるし
553: 2024/10/15(火)22:34 ID:2I09ehic(1) AAS
詳しい情報サンクス
CabalやめてStackに帰ります
GHCup tuiで選べるCabalやHLSやStackも全部recommendedに落とします
554: 2024/10/16(水)05:04 ID:PvdZsye3(1) AAS
ああCabal辞めてStackに移行したらビルドし直しただけでTLSのハンドシェイクがTwitchでは大丈夫なのにツイキャスで失敗する謎の不具合が治りました
やっぱStackすわ
555: 2024/10/18(金)18:33 ID:358zSdqs(1) AAS
別に不具合あったわけじゃないならよくね
みんなとか言い出したらそもそもみんなhaskellなんか使ってないが
556(1): 2024/10/25(金)23:46 ID:jl3K3ThU(1) AAS
Haskellを学んだみたいと思うんだけど、「すごいHaskell たのしく学ぼう」って書籍は今でも有用?
Haskellの良書として挙げることは多いと思うけど、出版から10年以上経ってるのが気になった
その間で言語に大きな変更があったとか、「今のHaskellだったらこう書くよね」みたいな注意が必要な点などあれば知りたい
あるいは最近の書籍でよりおすすめというものでも
557(1): 警備員[Lv.3][新芽] 2024/10/25(金)23:58 ID:ss1i659U(1) AAS
ちょっと古い情報だけど、
僕が「すごいH」を購入したのが2016.12だけど、数年後には章立ての変更まではなかったかもしれないけど、コードの記述など結構アップデートされてたような
いずれにしても、一冊でHaskellを、ってのはアレで、何冊かは読まないとと僕の場合
558(1): 2024/10/26(土)01:14 ID:jaMDzNJq(1/2) AAS
>>556
ラムダノートのプログラミングHaskell第2版
これを読めばモナドの使い方がわかる
559(1): 2024/10/26(土)13:33 ID:qze4GRwI(1) AAS
モナドはCのポインタより概念が難しいのどうにかならんの
別のはないんですか
560: 2024/10/26(土)14:33 ID:jaMDzNJq(2/2) AAS
ない
別に理論的な部分はすっ飛ばしていいよ
純粋関数型言語で手続き型言語のようなシーケンスをどうやったら書けるか?みたいなパズルを解く方法と思ってればいい
全てはdo記法にため
561: 2024/10/26(土)18:20 ID:QG40CL6R(1) AAS
>>559
だったらCleanはどうでせう?
モナドの代わりに線形何たらっての使ってる。
副作用関数を使い捨て関数と捉える概念らしいけど…。
変数は引数のない関数と捉えられるので、入力関数も外部で代入する変数と捉えられる。
んで、
return 0 >>= \x -> return (x + 1) >>= \x -> return (x + 1) = 2
は
return 0 >>= (\x -> return (x + 1) >>= (\x -> return (x + 1)))
と解釈されて、(\x -> ...) 部分が1個のラムダ式(関数)の上に階層構造なので、同名の変数 x はシャドーイングで古い値は隠される。
(そして隠されたら他から参照されなくなるのでGCでメモリを解放される)
IOモナドな入力関数も引数が無いので、値を外部で代入する変数と捉え、シャドーイングで古い値は隠されると考えると、線形何たらの使い捨て副作用関数と同じことしてる。
562: 2024/10/28(月)07:23 ID:duvMwVsG(1/2) AAS
>>557 >>558
ありがとう
まずはラムダノートのプログラミングHaskellを買いました
すごいH本はもう一冊読もうと思って時に買います
563(1): 2024/10/28(月)11:18 ID:ABlPDVd9(1) AAS
すごいエロい本か
564: 2024/10/28(月)16:01 ID:3PX2guVI(1) AAS
>>563
それ面白いと思ってレスしてんの?
565: 2024/10/28(月)17:13 ID:B1OBTGXf(1/2) AAS
10年前のtwitterでは鉄板ジョークでしたよ
すごいH
566: 2024/10/28(月)19:07 ID:aKxYxFxQ(1) AAS
haskell知らない人はエロ本だと思うし
隠れた卑猥な意味が無ければ
隠語としての価値も無い
567(2): 2024/10/28(月)19:57 ID:2RuMUG8y(1) AAS
ML族のRustが市民権を得た今haskellやる意味ないよ
その時間をRustに当てなさい
568: 2024/10/28(月)21:28 ID:B1OBTGXf(2/2) AAS
平均的HaskellerはRustもやった上でLinearTypes拡張がどうなるか様子見しつつ両方使ってるのでは?
外部リンク:zenn.dev
569: 2024/10/28(月)22:50 ID:duvMwVsG(2/2) AAS
Haskellスレで言われましても
わざわざカレー屋に来て「ラーメンを食え」って喧伝するようなものでしょ
570: 2024/10/29(火)10:29 ID:2QinlXet(1) AAS
>>567
ほんそれ
571: 2024/10/29(火)11:58 ID:IrbjK6II(1) AAS
Rustを関数型扱いするやつは
Rustも関数型もまるで理解してない
だから誰も真面目には相手してくれない
572: 2024/10/29(火)12:22 ID:dZcxKFDp(1) AAS
そう。世界がHaskellから孤立していく
世界はもっと危機感もった方が良いよ
573(1): 2024/10/29(火)15:30 ID:+9FvEifI(1/2) AAS
実用プログラムに使った例はあるの?
574: 2024/10/29(火)16:00 ID:FJXFYfo2(1) AAS
>>567
MLとは全然ちゃうがな
HM型推論せんやろ
575(1): 2024/10/29(火)22:29 ID:LPWWq4s4(1) AAS
>>573
自分も詳しくはないけど、クローズドな分野が多いんじゃない?
576: 2024/10/29(火)23:08 ID:+9FvEifI(2/2) AAS
>>575
秘密ということ、それじゃわからんと同じことじゃないか
577: 2024/10/29(火)23:25 ID:6SLkDv7J(1) AAS
世界は頭悪すぎてHaskellを使いこなせていない
世界はもっと危機感を持った方が良い
578: 2024/10/30(水)02:10 ID:p9nsrTZ/(1) AAS
急に主語が大きくなったぞωωω=2πf
579: 2024/11/02(土)09:15 ID:KpOoS8wa(1) AAS
クローズドな部分なら使ったうちには入らないな
580(2): 2024/11/02(土)18:11 ID:3NvQMTDb(1/2) AAS
金融工学で使ってるとこあるかもね
OCamlが定番らしいし
581(1): 2024/11/02(土)19:19 ID:Mufqfjtq(1) AAS
>>580
やはり実務ではフィンテックですか。
このスレで趣味教養的に
数理の応用実験や
アート作品生成プログラム記述用とかで
使ってる香具師いる?
582(1): 2024/11/02(土)19:33 ID:pIz290+w(1/3) AAS
>>580
みずほでOCamlしか聞いたことない
結局大規模障害出ちゃったけど
583(1): 2024/11/02(土)19:38 ID:3NvQMTDb(2/2) AAS
>>582
金融商品の設計に使うんだよ
その手の障害とは全く関係ない
584(1): 2024/11/02(土)20:11 ID:pIz290+w(2/3) AAS
>>581
どっちかというと、教育に興味があって、例えば足し算の足し方が増加と追加って2種類あるんだけど、追加は後から増えるって意味だと教科書に書いてあるけど、その説明がもやもやする。
それで、違いを考えるとこれは
増加の足し算:末尾再帰。その場で簡約出来る
3 + 2 = (3 + 1) + (2- 1) = 4 + 1 = (4 + 1) + (1 -1) = 5 + 0 = 5
追加の足し算:再帰。基底部まで来てから簡約開始。リストの ++ 演算子的な動き。
2 + 3 = 1 + ((2 - 1) + 3) = 1 + (1 + ((1 - 1) + 3)) = 1 + (1 + (0 + 3)) = 1 + (1 + 3) = 1 + 4 = 5
みたいに、足し算作らないと気付かない違いを気付いて教えるのに役立ててる。
(+1/-1の代わりにsucc/pred関数の適用で考えた方が分かり易いかも)
585: 2024/11/02(土)20:16 ID:pIz290+w(3/3) AAS
>>583
そうなんだ。
そういうライブラリ頼みっぽい事なら、MathmacticaとかPythonのが良さそうなのにね。
金融商品だったら統計に強いRだってあるし。
なぜわざわざOCamlだったのやら…。
586(1): 2024/11/03(日)11:40 ID:kGU90lSm(1) AAS
>>584
本スレ誘導
2chスレ:tech
587: 2024/11/03(日)17:33 ID:4RaSizfZ(1) AAS
その手のはかなり昔からの話だしその頃pythonはそんな一般的ではない
588: 2024/11/03(日)18:58 ID:W/WQS3jI(1) AAS
>>586
え…。
Haskellを何に使ってるか聞かれたから答えたのに、そりゃ無いよ。
589: 2024/11/06(水)18:53 ID:s8sk505y(1) AAS
semigroupoidsのAltからFunctor抜いたやつないのかな
catsのSemigroupK相当のやつ
590: 2024/11/07(木)02:17 ID:w1FRCcDr(1) AAS
HackageもHaskellWikiもつながらねえ
攻撃でも受けたか
591: 2024/11/07(木)06:45 ID:NVSipRlq(1) AAS
数か月前もHoogle繋がらなかったしね…。
592: 2024/11/09(土)18:32 ID:r4DlAvJp(1/2) AAS
mylist.py TotalSeconds : 6.1246778
1:def mylist(n, m):
2: a = 1
3: outer = []
4: for _ in range(0, n):
5: inner = []
6: for _ in range(0, m):
7: inner.append(a)
8: a += 1
9: outer.append(inner)
10: return outer
11:
12:print(mylist(6000, 8000)[-1][-1])
上と同じ動きのコードを書いたけど、
アルゴリズムとしてはPythonと同じmylist.hsのコードが良いはずなのに、
どっちも最適化するとmylist2.hsのが良好。
(ファイル名の横の秒数は実行時間)
mylist.hs TotalSeconds : 4.107899
1:main = print.last.last $ mylist 6000 8000
2:
3:mylist n m = take n.f $ [1..]
4: where f ns = xs:f ys
5: where (xs, ys) = splitAt m ns
mylist2.hs TotalSeconds : 2.3916408
1:main = print.last.last $ mylist 6000 8000
2:
3:mylist n m = take n.iterate f $ [1..m]
4: where f = map (+m)
593: 2024/11/09(土)18:32 ID:r4DlAvJp(2/2) AAS
mylist2.hsのアルゴリズムは
f = map (+3)とすれば
[1,2,3]
[4,5,6] -- f [1,2,3] = [1 + 3, 2 + 3, 3 + 3] = [4,5,6]
[7,8,9] -- f (f [1,2,3]) = f [1 + 3, 2 + 3, 3 + 3] = [4 + 3, 5 + 3, 6 + 3] = [7,8,9]
と、行数が増えるごとに関数の適用回数が増えるので本来なら遅いはずですが、
考えるに直前の結果をキャッシュする様な最適化が施された模様。(-O3)
(そうすると、mylist.hsのsplitAtの方がボトルネックになる?)
最適化なしでのコンパイルはしてないので、
もしかしたらiterateの中身自身がキャッシュするように改良されたのかも。
594: 2024/11/10(日)16:05 ID:AfmJKCJ3(1) AAS
これ数学的にどういうことなのか
かいつまんで教えてくらまいか
watch?v=dYj0rPQeRkA
595(1): 2024/11/16(土)10:08 ID:9CYVpzbn(1) AAS
Category Theory Using Haskell
An Introduction with Moggi and Yoneda
Shuichi Yukita
という書籍が来月出るんですって?
596(1): 2024/11/16(土)14:32 ID:Avgm411i(1/2) AAS
>>595
高いな
> Hardcover
> \36,125 Tax included
597: 596 2024/11/16(土)14:36 ID:Avgm411i(2/2) AAS
円記号がバックスラッシュになっていたので訂正
¥36,125
フォントによるわけだが
598: 2024/11/16(土)15:13 ID:ZnREBqGy(1) AAS
買って損するだけの高額本の予感
599: 2024/11/16(土)15:27 ID:x85mVkLf(1) AAS
なんだ雪田の本じゃねぇか
プラスアルファはあるかも知れんが
基本雪田の「圏論入門 Haskellで計算する具体例から」と大差無いと思うぞ
600: 2024/11/16(土)20:50 ID:ZUJ+jDQV(1/4) AAS
結局Moggiのアイディアがなんなのか書いてなかったから、洋書でも同じでしょ。
601: 2024/11/16(土)21:01 ID:UsNa54E4(1) AAS
すでに書かれてるのがwikipediaにあるじゃん
外部リンク:ja.m.wikipedia.org
602: 2024/11/16(土)21:18 ID:ZUJ+jDQV(2/4) AAS
wikiのは肝心のvalueとcomputationについてちゃんと書いてない。
computationの訳を「計算された値」とするのは微妙。
603: 2024/11/16(土)21:28 ID:ZUJ+jDQV(3/4) AAS
『圏論入門』の方にはvalueもcomputationも書いてなかったと思うから言わずもがな。
604: 2024/11/16(土)21:43 ID:HNcchqjT(1) AAS
出たら人柱になって買って読んで下さい
605: 2024/11/16(土)22:29 ID:MlIU4R6X(1) AAS
多分加筆してると思うよ
日本の出版社はなぜかページ数制限があることが多いんだけど
海外にそれはないし
606: 2024/11/16(土)22:41 ID:ZUJ+jDQV(4/4) AAS
加筆してvalueとcomputationの説き起こしから始めて本当にMoggiのアイディア書くかなぁ?
米田の補題が工学応用できるとかいう主張と衝突する気がするんだけれど。
607: 2024/11/17(日)08:11 ID:RK7ri1yG(1) AAS
レポよろ
608: 2024/11/17(日)09:07 ID:zx90fdBd(1) AAS
ぷりぷりです
609: 2024/11/17(日)14:35 ID:895B27h0(1/2) AAS
4万近く出してわざわざレポだけする奴なんているの?
圏論入門と同じでそれらしいキーワードだけ出して終わりの可能性高いのに。
610: 2024/11/17(日)19:34 ID:A63wUj4E(1) AAS
まぁそもそもHaskellで圏論持ち出す必要ないしな
生産性上がらないよ
611(1): 2024/11/17(日)19:42 ID:bAlb8WtH(1) AAS
Haskell、コーダー界隈で圏論勉強会が流行していた時期、あれは何だったのか?
612: 2024/11/17(日)20:00 ID:895B27h0(2/2) AAS
圏がグラフの拡張みたいな概念だったから、グラフ理論みたいに有用なプログラミングにつかえるアルゴリズムがあるんじゃないかってことでやってたように見えた。
モナドも説明したかったようにみえたけど、結局圏論の勉強を踏まえた説明はでてこなかった。
613: 2024/11/17(日)21:17 ID:U7PWp5lE(1) AAS
>>611
俺も行ってたわw
数学クラスターからの圏論マウントを喰らっていくのやめたがw
そういうやつ多いんじゃないか
614: 2024/11/20(水)04:56 ID:vcDCbnyw(1) AAS
プログラムは合成できないといけないって当然のことを、いちいち圏である必要があるとか言い換えるオレ天才だわー
615: 2024/11/20(水)18:55 ID:QVKMRnqI(1) AAS
外部リンク:dic.nicovideo.jp
616: 2024/11/21(木)00:16 ID:r2/mXbdf(1/2) AAS
集合論と圏論の抽象度がもし同レベルならたしかに圏である必要はないな
必要ない情報は捨象されるべきだと言われれば何も反論できない
だから抽象化マウントは強いんだ
617: 2024/11/21(木)01:45 ID:bAf4oZLa(1) AAS
抽象化すればプログラムしにくいと思うけど
618: 2024/11/21(木)19:02 ID:fTdZV0pc(1) AAS
プログラムが圏になるためとかいうクソしょうもない理由がモナド導入の理由って本当か?
圏論っていうか圏じゃん。モノイド構造も米田の補題もなにも出てこないんだが
619: 2024/11/21(木)21:57 ID:r2/mXbdf(2/2) AAS
型構築子を導入すれば関手もモナドも勝手についてくる
型を必要とするすべての言語で同じことが言える
これも抽象化
620: 2024/11/28(木)10:04 ID:p2Q1UON9(1) AAS
haskellでスクレイピングがやりたいんだが
arch linuxのリポにはscalpelがない
別言語でやったほうがいいかな?
621: 2024/12/04(水)21:11 ID:D3PBVzJs(1) AAS
ディストリで全部パッケージ化してくれてるとは思えん
stackかcabal入れて自分で管理するんじゃね?
ローカルに1GBくらいのライブラリ入るし重複しないようにしないといかんが
もちろんseleniumとか使うにしてもpythonとかrubyのほうが楽やろ
622: 2024/12/08(日)23:12 ID:G2o8fSXB(1) AAS
おおむね10^-300前後(-400乗は無理だった)精度の任意精度少数。
定義済みの中ではPico(10^-12)までは定義されてる。
下の定義のE300/10^300/F300を書き換えれば任意精度の浮動小数型が作れる。
(F300がPicoとかNanoとかの型)
ただし、pi/sin/sqrtなどの倍精度/単精度の浮動小数型用関数/定数が使えなくなるので四則演算を駆使して自作する必要がある。
import Data.Fixed
data E300
instance HasResolution E300 where resolution _ = 10^300
type F300 = Fixed E300
623: 2024/12/19(木)15:03 ID:NXRHTsH0(1) AAS
add (x,y) (a,b) = (x+a,y+b)
これをaddを定義せずにarrowで簡単にかく方法はありますか
624: 2024/12/19(木)16:15 ID:hCGKCs/t(1) AAS
arrowてなんすか
625: 2024/12/19(木)19:27 ID:gIJYmlNm(1) AAS
富士通のスマホ
626(2): 2024/12/20(金)01:32 ID:/9ZUXmih(1/2) AAS
スマホでHaskellを簡単に書く方法はないかな
627(1): 2024/12/20(金)02:01 ID:I9azuXSK(1) AAS
>>626
今はキミの言うところの「簡単」ではない環境で書いてるってこと?
628: 2024/12/20(金)02:04 ID:/9ZUXmih(2/2) AAS
>>627
だまらっしゃい
俺がウザ絡みするのは良いけどアンタにレスつけてウザ絡みする権利はないんだよ
何故ならアンタは世界で一番価値のない存在だからね
629: 2024/12/20(金)15:54 ID:IOWVZ3it(1) AAS
スマホでHaskell書く必要ある?
ないよね
630: 2024/12/20(金)22:08 ID:uE9QxZQG(1) AAS
>>626
iOSならRaskellってアプリあるけど、開発止まって大分経つので画面がずれたりする…。
ideoneとかpaiza.IOとかのクラウドサービスが今のところは一番手軽かもね。
631(1): 警備員[Lv.1][新芽] 01/08(水)22:25 ID:lvne7rNk(1) AAS
初学者のため、言葉の定義があいまいな部分はご容赦ください
IOモナドの純粋性についてですが(すでに言葉があやしい)、
実際に副作用が起こるのは、mainに束縛され実行されたり、ghciプロンプトからアクションを投入したときで
アクションを生成するまでは同じ入力に対してはつねに同一のアクションを出力するという意味で純粋であるという理解でよいでしょうか(まだ実行前なので、副作用は生じていない)
アクションを生成するまでが純粋
ただ、このときの純粋性の有り難みがさっぱり分からず…
純粋な関数が遅延評価などに有効なことや、副作用のある処理が >>= などで順序を拘束しなければならないことは分かるのですが
632(1): 01/09(木)20:13 ID:xwwTGWUu(1/3) AAS
評価が全部終わった後じゃないと参照透明性が保証されない。
633(1): 01/09(木)20:18 ID:xwwTGWUu(2/3) AAS
規制あったはずなんだけどなんか書き込めた。
アクションの生成が完了(コンパイルの終了)。この時点ではみんな純粋。
その後に、アクションの実行(プログラムの実行)が起こって入出力が出る。
アクションの生成時点まですべての関数が純粋関数だということは参照透明性が保証されるということで、ありがたみはその一点にあると思うが。
634(2): 01/09(木)21:49 ID:31eIYKLT(1) AAS
異教徒は汚染物として分離隔離する思想
635(1): 警備員[Lv.2][新芽] 01/09(木)22:58 ID:vav7Znkh(1) AAS
>>632-633
ありがとうございます >>631 です
あくアクションの生成までが純粋、でよいことを確認させていただきました
でもこれって、Cだろうがアセンブラだろうが、(厳密には違うかもしれませんが)同じソースコードをコンパイル(アセンブリ)すれば同じオブジェクトファイルが生成されるのと何が違うのだろうかと
>>634 にある分離隔離のような、何かこう、これまでとは違う何かがあるはず…と、浅知恵で考えるから訳が分からないのです…
636: 01/09(木)23:09 ID:2G6IUNoe(1) AAS
>>634
おパンツ分解されたオペラッドのおパンツの中で脱糞してもズボンの裾のお股のどっち側からウンコが転げ出てくるのかわかんないだけかと思ってた。
637(1): 01/09(木)23:34 ID:xwwTGWUu(3/3) AAS
>>635
>でもこれって、Cだろうがアセンブラだろうが、(厳密には違うかもしれませんが)同じソースコードをコンパイル(アセンブリ)すれば同じオブジェクトファイルが生成されるのと何が違うのだろうかと
だから参照透明性の保証だって。オブジェクトファイルとしては状態変化とかしているけれど、元のHaskellコードとしては参照透明性は保たれている、そこがすごいということなんだし。
逆に普通のオブジェクトファイルと全く違うなんてことありうると思う?同じコンピュータ上で動くんだからオブジェクトファイルとしては変わらんだろ。
638(1): 警備員[Lv.5][新芽] 01/10(金)09:27 ID:N8eMPB8m(1/3) AAS
>>637
レスをありがとうございます
参照透過性の保証、ですね
アクションを実行し、副作用が起こる前なので当然だ、という解釈は誤っているでしょうか
まだ本の上の字面を追って学んでいるだけで圧倒的にコーティング量が足りない状態なので、これから経験を積むうちにいつかスッと腑に落ちるときがくるのかもしれません
639: 01/10(金)10:01 ID:xLB3XHZu(1) AAS
必要呼び評価戦略を採用するための前提として、すべての式の参照透過性が要求されるというだけでは
640(1): 01/10(金)18:54 ID:X+hiLHcK(1/5) AAS
>>638
>アクションを実行し、副作用が起こる前なので当然だ、という解釈は誤っているでしょうか
?なんか混乱しているんじゃないか。
アクションの生成時点でのHaskellコードの参照透明性と、オブジェクトコード実行の際の参照の処理は別物だぞ。
641(1): 01/10(金)18:59 ID:X+hiLHcK(2/5) AAS
補足:
Haskellコンパイルは少なくとも次の二つの段階を持つ
1.アクションの生成(入出力指示書の生成、Haskellコードの字面のコンパイル)
2.アクションの実行
1.のアクションの生成時に参照透明性がHaskellコードとして保証されている。
アクションの生成で必要な参照行為は全て終わっているので、2.では入出力だろうが破壊的操作だろうがやっても文句を言われない。
IOの機構がすごいのは1.アクションの生成計算で参照透明性が保証されているというところがうれしいところ、だという話。
642: 01/10(金)19:16 ID:NIbIyPdh(1) AAS
一度死んだら復活は有り得んので注意な
643(3): 警備員[Lv.7][新芽] 01/10(金)19:39 ID:N8eMPB8m(2/3) AAS
>>640-641
レスをありがとうございます
そうですね
表現がいけませんでしたが、そのように理解しています
あとひとつ伺いたいのが(アドバイスいただいたことがまだちゃんと理解できたわけではないのでアレですが)、
参照透明性が担保されているとは、(1.アクションを生成する時点までは)副作用がある処理は書くことができない、ということでしょうか
644(1): 警備員[Lv.7][新芽] 01/10(金)19:48 ID:N8eMPB8m(3/3) AAS
>>643 ですが、
このレスはちょっと意味が分かりませんね
実行前なので副作用は怒りようがありませんね
645: 01/10(金)20:01 ID:X+hiLHcK(3/5) AAS
>>643-644
そのように理解しています。って本当に理解してるか?
アクションの生成において生成しているのは入出力の指示書みたいなもので入出力自体はない。
こういう入力があったらこういう計算方法でこういう出力をするみたいな手順を生成しているだけ。
なんで参照透明性が担保されているというところでそんな引っかかるんだ?
646: 警備員[Lv.7][新芽] 01/10(金)20:34 ID:0gelnbg2(1/2) AAS
>>643 で確認したかったことは次のようなことでした
アクションを生成する段までは副作用なく、同一のプログラムを入力とすれば、かならず同一のアクションが出力されるか
ということでした
それはそうであるように思います
647: 01/10(金)20:42 ID:X+hiLHcK(4/5) AAS
同一のプログラムを入力とすればってどういう意味?
前も言ったようにアクションの生成とアクションの実行は別フェーズ。同一のアクションが出力される、というのはどっちのフェーズでのことを言ってんの?
648: 警備員[Lv.8][新芽] 01/10(金)21:16 ID:0gelnbg2(2/2) AAS
アクションが出力される、なので 1.です
649(1): 01/10(金)21:34 ID:X+hiLHcK(5/5) AAS
なんか理解しているのかすごい怪しいなぁ。
一応回答しておくと、アクションの生成のフェーズなら参照透明性を保証された純粋関数の計算でしかないから
main文が同じなら当然同じアクションが生成される。
同じプログラムなら生成されるものも同じという意味で。
理解してたらこんな話出てこないと思うんだけど。
650: 警備員[Lv.1][新芽] 01/10(金)22:49 ID:/2hXYNXu(1) AAS
>>649
重ね重ね、ありがとうございます
理解できているかいなかについては、理解が浅いため、確認のために伺わせていただいています
伝わりづらくて申し訳ありませんでしたが、>>649の内容のような理解で正しいかを確認したかったというのが趣旨でした
簡潔に表現していただいて助かりました
651: 01/13(月)17:46 ID:uTEEqnKb(1) AAS
あけなしておめでとうございます
去年は多様性がようやく否定され始めた年ですが、
今年はhaskellの純粋主義のやうに分類・隔離・排除躍進の年となるようがんばりましょう
652: 01/15(水)00:44 ID:O9bWSOqU(1) AAS
マクロな現象には個々人のばらつきを否定する力はない
逆に個人は10回連続でグーを出してみてもたとえば「正規分布に従う」とかなんとかいう法則を反証できない
ミクロとマクロを隔離したのはただの統計学であって純粋でも主義でもない
653: 01/15(水)05:29 ID:QElBeHY8(1) AAS
誰もいまミクロ・マクロの話なんてしてないぞ
654: 01/21(火)22:22 ID:QQz8h7YM(1) AAS
雪田の英語版買って読んだ勇者はおらんか?
655: 01/22(水)01:14 ID:SDQT/604(1) AAS
3万も出してよもうとは思わない。
目次読むとKleisli tripleの節はあるのにKleisli categoryの節がなかったり、なぜかその後にMoggi's theoryが出てきたりと
少なくとも構成があんまりいい感じはしない。
656: 01/22(水)03:57 ID:ydcqGqD9(1) AAS
まぁ圏論はHaskellやるうえで無駄だしな
657: 01/23(木)21:00 ID:j8NlocC3(1) AAS
しかもHaskell自体やるだけ無駄だしな
658: 02/13(木)07:10 ID:NHs8kkcw(1) AAS
wikiでghc見たら、中の人MSリサーチにいるのな。
最近C#並みに速くなったと思ったら、そういう事か。
納得。
659(1): 02/13(木)13:53 ID:LmH89MFs(1/2) AAS
暗記系の問題が嫌われるのは答えを隠す意味がないからだが
逆に陰謀論が大人気なのは、隠蔽する動機があるからかもしれない
660: 02/13(木)19:59 ID:8vmF21CT(1) AAS
>>659
誤爆か?
次から気をつけな
661: 02/13(木)21:57 ID:FvaixK+o(1) AAS
わざとだろ。
数板に延々スレ違を書き込む基地外がいるが多分そいつと同一。
662: 02/13(木)22:11 ID:LxUFvhMj(1) AAS
ワードサラダくん数学板にもいるんか
まあいそうな板だな
663: 02/13(木)23:39 ID:LmH89MFs(2/2) AAS
有意味な事実と有意味なデマを隔離するのは難しいらしい
だが、真でも偽でもないナンセンスはなぜか瞬時に判断できる
664: 03/19(水)11:03 ID:JUfTLTVZ(1) AAS
IntSetのsizeがO(1)じゃなくO(n)なのはなぜですか、O(1)で実装できそうなもんですが
665: 03/19(水)19:45 ID:4qyoYSYb(1) AAS
unionとかで重複要素数えるのが面倒だから必要になるまで数えない
666: 03/19(水)20:51 ID:S6mpqhEQ(1/2) AAS
私は最強ーーすき
667: 03/19(水)20:52 ID:S6mpqhEQ(2/2) AAS
誤爆スマソ。懐メロチャンネルと間違えた
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.036s