関数型プログラミング言語Haskell Part27_©5ch.io
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん 転載ダメ©2ch.net
2015/01/08(木) 21:02:35.67ID:IQPOX3u7haskell.org (公式サイト)
http://www.haskell.org/
前スレ
関数型プログラミング言語Haskell Part26
http://peace.2ch.net/test/read.cgi/tech/1406436392/
0175デフォルトの名無しさん
2015/01/18(日) 19:42:56.42ID:IU9bGGXQ0176デフォルトの名無しさん
2015/01/18(日) 20:45:45.78ID:V765A4GCあーそういう意味じゃないな
接触はしてないと言うかするわけがない
あそこら辺の人はアレがでたらめだとひと目見抜けないと(関数型プログラミング言語を使うのは)難しいって感じで放置しそう
0177デフォルトの名無しさん
2015/01/18(日) 20:48:19.28ID:ozX7xrZl0178デフォルトの名無しさん
2015/01/18(日) 20:57:45.23ID:ERirhDOz0179デフォルトの名無しさん
2015/01/18(日) 23:09:56.08ID:m3hmoOOc0180デフォルトの名無しさん
2015/01/19(月) 07:22:58.14ID:e75uCkWu0181デフォルトの名無しさん
2015/01/19(月) 07:23:57.16ID:e75uCkWu0182デフォルトの名無しさん
2015/01/19(月) 08:29:09.56ID:h1tmdNUx「これこれこういう本を読め」って、あんたQiitaでも散々自分の記事のリンク張って、
読めって強要しているじゃないか
0183デフォルトの名無しさん
2015/01/19(月) 10:06:32.13ID:tWyHvUIe0184デフォルトの名無しさん
2015/01/19(月) 10:11:16.40ID:W5DPVPB80185デフォルトの名無しさん
2015/01/19(月) 10:34:59.45ID:W+ZMH4Rm0186デフォルトの名無しさん
2015/01/19(月) 11:07:20.34ID:t2o2vSxL0187デフォルトの名無しさん
2015/01/19(月) 13:09:30.75ID:7cIVKz160188岡部健
2015/01/19(月) 13:23:16.84ID:jdcvUTrq青空文庫を読む apk
便利だよ、使ってねクズども
0189デフォルトの名無しさん
2015/01/19(月) 16:35:00.12ID:Wl5S0I/B0190デフォルトの名無しさん
2015/01/19(月) 16:38:17.97ID:Wl5S0I/B0191デフォルトの名無しさん
2015/01/19(月) 17:36:56.76ID:RjD6WSsn0192デフォルトの名無しさん
2015/01/19(月) 18:31:40.95ID:zYruZwCtこの程度だったのか・・・・・
0193デフォルトの名無しさん
2015/01/19(月) 19:14:55.07ID:1zvC0LuUhttp://yomogi.2ch.net/test/read.cgi/net/1419377805/
0194デフォルトの名無しさん
2015/01/20(火) 01:19:59.90ID:NaIuJpGPhaskell のコードを書いて、ghcmod 使ったりコンパイルしたりする、
という場合、ghc じたいが sandbox に気づいてそこのライブラリを使う、というのは起こらなくて、
myproject.cabal を作るのは必須という理解でいいですか?
なんかくだすれみたいで申し訳ないのですが、どうもハッキリ掴めないのでお許しを
0195デフォルトの名無しさん
2015/01/20(火) 07:47:39.53ID:8CmI1DCg・双方向連結リストじゃない単方向連結リストだ
・「始端」は自己参照的なEmptyPairだ(「終端」ではない)
・でもセルごとの連結ポインタは後続のセルから先行のセルを指すようになっている
・実装は配列
kenokabeちゃんはリストというデータ構造を知らない
0196デフォルトの名無しさん
2015/01/20(火) 07:50:15.67ID:8CmI1DCghttps://plus.google.com/102413788769460359022/posts
"通っていた学校 University of California, Los" とあるけど、絶対ウソ。
0197デフォルトの名無しさん
2015/01/20(火) 07:55:46.62ID:8CmI1DCgvar $push = M.$push = function(arr, data)
{
arr[arr.length] = data;
};
この実装でなんで
「ほら見ろ逆方向リストで動作するじゃねーか」と
言い張れるのか果てしなく謎だ。
0198デフォルトの名無しさん
2015/01/20(火) 08:28:14.07ID:Z11IUfXNcabal exec ghc -- --[ghcオプション]
みたいにすればsandbox awareにghc使える。
0199デフォルトの名無しさん
2015/01/20(火) 10:35:44.47ID:NaIuJpGPありがとうございます。ちょっと cabal のマニュアル読み直してきます
0200デフォルトの名無しさん
2015/01/20(火) 10:58:53.32ID:Nn6T7LRa0201デフォルトの名無しさん
2015/01/20(火) 10:59:28.98ID:Nn6T7LRa0202デフォルトの名無しさん
2015/01/20(火) 13:21:19.76ID:r45csLnY0203デフォルトの名無しさん
2015/01/20(火) 14:58:36.18ID:Nn6T7LRa0204デフォルトの名無しさん
2015/01/20(火) 23:34:29.85ID:Nn6T7LRa東京電力福島第一原子力発電所と第二原子力発電所で、作業員が死亡する事故が相次ぎ、第一原発では、21日廃炉作業を中止して、安全点検を実施することになりました。
背景について東京電力は、記者会見で、「作業量が多くなっていることも考えなければならない」と述べ、作業の進め方や安全対策に問題がないか検討する考えを示しました。
20日午前9時半ごろ、福島第二原発で、廃棄物を処理する建物で点検作業をしていた40代の作業員の男性が、点検用の機具に頭を挟まれ、ドクターヘリで病院に搬送されましたが、死亡しました。
福島第一原発でも、19日午前9時ごろ、雨水をためるタンクの点検をしていた50代の作業員の男性が、高さおよそ10メートルのタンクの天井から転落し、20日未明になって死亡しました。
さらに柏崎刈羽原発でも、19日、作業員が足場から3メートル余り下に転落して大けがをしました。
こうした事態を受けて東京電力は、3つの原発の所長とテレビ会議で結ぶ異例の記者会見を開き、姉川尚史原子力・立地本部長が陳謝しました。
現在、福島第一原発では、廃炉や汚染水対策などのため、去年の同じ時期のほぼ2倍に当たる1日およそ7000人の作業員が働いていますが、
「作業量の急増が、事故が相次ぐ背景にあるのではないかと」問われたのに対し、姉川本部長は、「作業量が多くなっていることも考えなければならない」と述べ、作業の進め方や安全対策に問題がないか検討する考えを示しました。
福島第一原発では、21日、廃炉作業のほとんどを中止し、安全点検を実施することになり、第二原発でも安全の徹底が図られるまで、作業を中止するということです。
福島第一原発では、去年3月にも、崩れてきた土砂の下敷きになって作業員が死亡したほか、11月には、タンクの増設工事中に、鋼材が落下して3人が重軽傷を負うなど、作業事故が相次ぎ安全対策が課題になっています。
東電社長「安全確保までほとんどの作業再開せず」
0205デフォルトの名無しさん
2015/01/21(水) 10:02:49.56ID:tSYl3nCX0206デフォルトの名無しさん
2015/01/21(水) 10:11:05.68ID:b1WEqEY30207デフォルトの名無しさん
2015/01/21(水) 10:12:38.22ID:PxbGo4hc気分。
紀文のはんぺん。
0208デフォルトの名無しさん
2015/01/21(水) 10:12:59.70ID:mE4mMlsp先に定義を見せておかないと後のコードが読めなさそうなものはlet、
名前を見れば何をやってるかわかるよね、なものは後からwhereで補足、
ってのが一般的なんじゃないかね。
ただ個人的にはdoの中ではletも使うが、そうでないところでは
ほぼwhereしか使わん。複雑なのは型を明示してトップレベルに書いちゃうし。
ただ、whereと違ってlet in は式なので、declaration styleではなく
expression styleの人はlet の方がいいはず。
0209デフォルトの名無しさん
2015/01/21(水) 11:52:00.61ID:g6aErnoK毛の壁の新作キター
0210デフォルトの名無しさん
2015/01/21(水) 11:52:53.36ID:g6aErnoK0211デフォルトの名無しさん
2015/01/21(水) 12:13:50.54ID:tSYl3nCXなるほど。確かにdo内でwhereを使うのはしっくりこない感じあります
0212デフォルトの名無しさん
2015/01/21(水) 12:26:32.64ID:tSYl3nCXボトムとか入出力とか積極的に扱いたい、って需要があって…
1. それをうまくやる方法としてモナドが発見されて、実現のために参照透過性の確保が必要になった。
2. デフォルト遅延評価が採用された。
って経緯だと思うんだけど、
遅延評価なしの言語でモナドってどうなの?
0213212
2015/01/21(水) 12:48:33.18ID:tSYl3nCX違うか、参照透過の為にモナドが必要なんだ。
逆に言うと、モナドを使った結果、(入出力も)参照透過に表現できる。
0214デフォルトの名無しさん
2015/01/21(水) 13:32:55.89ID:Oex/ZY2d0215デフォルトの名無しさん
2015/01/21(水) 13:57:24.11ID:IlRdpzFj0216デフォルトの名無しさん
2015/01/21(水) 14:24:07.34ID:tSYl3nCXないと思うです。
でも Haskell 以外でモナドメジャーじゃないし、どうなのかな、って。
0217デフォルトの名無しさん
2015/01/21(水) 14:29:33.51ID:fNn/u+Hw0218デフォルトの名無しさん
2015/01/21(水) 14:47:43.51ID:tSYl3nCX(>>=)が第一引数に対して正格でないのは何ででしたっけ…
0219デフォルトの名無しさん
2015/01/21(水) 14:56:08.53ID:tSYl3nCX0220デフォルトの名無しさん
2015/01/21(水) 21:25:39.56ID:abguHzCC0221デフォルトの名無しさん
2015/01/21(水) 23:17:05.40ID:Vh0iozsQ遅延評価 → 副作用があるとまずい
その対偶は
副作用無し(≒参照透明) → 遅延評価でも大丈夫
一方副作用は必要
参照透明を保ったまま副作用を扱う仕組みがモナド
>>213で合ってる
0222デフォルトの名無しさん
2015/01/22(木) 00:01:32.40ID:yXMo1Viy>参照透明を保ったまま副作用を扱う仕組みがモナド
駱駝師匠の受け売りではないが、参照透明を保ちつつモナドで
隠伏的に世界状態を受け渡すのがHaskellのIOのコツなんで、
普通の言語で「副作用」と呼ばれるものを、世界→(値,世界)な
関数としていわば「主作用」にしているというべきではあるまいか。
つうかだな、この観点からは手続き型言語の手続き自体が、
計算機の状態から計算機の状態への純粋な関数なんだよね。
0223デフォルトの名無しさん
2015/01/22(木) 00:29:11.30ID:FeOaPmA2http://qiita.com/camlspotter@github/items/06b3d8af27feedf91cf2
駱駝師匠ってこれのことだよね?
その観点だとそうなので、だからむしろそういう観点で語られるより、
参照透明(同じ式の値はどこでも同じ)という観点から語って、
手続き型言語とは違うことを強調してることが多いと思う。
0224デフォルトの名無しさん
2015/01/22(木) 00:39:11.17ID:3m94e4CI0225デフォルトの名無しさん
2015/01/22(木) 00:54:14.02ID:yXMo1Viyうーん、値は値でいいんだよ。
同じ引数で同じ関数を呼び出した時に同じ返り値、ってのが守られてればいい。
引数として計算機の状態を明示的に追加すれば、いわゆる手続きも純粋な関数。
そしてこれは実は参照透明。可変な値は実際には計算機の状態を受け取る関数だから。
0226デフォルトの名無しさん
2015/01/22(木) 00:57:47.95ID:yXMo1Viy計算機の状態を受け取る関数として理解するのは「通常とは違う意味」なのかもな。
個人的にはそういう関数として理解することが多いので、ズレてるのかもしれん。
0227デフォルトの名無しさん
2015/01/22(木) 01:13:08.79ID:J1v0x3Vw個人的には命令を表す抽象型だと思っておく方が誤解が少ないと思う
関数だと思うことで目から鱗が落ちる人も居るみたいだから全否定はできないが
0228デフォルトの名無しさん
2015/01/22(木) 01:59:40.16ID:yXMo1ViyHoare論理とか手続き型の表示意味論とか考えるとむしろ「世界状態の関数」という理解の方が本筋に思えるのだよ。
命令を表す抽象型、という方が便利な方便に思える(いや確かに1級の値として扱えるし便利なんだが)。
0229デフォルトの名無しさん
2015/01/22(木) 02:41:58.82ID:AOQ2U7ssどうでもいいけどそれ対偶じゃなくて逆じゃないかと思うのだが
0230デフォルトの名無しさん
2015/01/22(木) 02:54:10.14ID:yXMo1Viy対偶は「副作用があってもまずくない→遅延評価でない」
逆は「副作用があるとまずい→遅延評価である」
裏は「遅延評価でない→副作用があってもまずくない」
「副作用無し→ 遅延評価でも大丈夫」はこのいずれでもない。
0231デフォルトの名無しさん
2015/01/22(木) 07:11:06.21ID:mciTShj5遅延評価 → 副作用があるとまずい
は
遅延評価 → 副作用あり → まずい
だからflipして戻すと
副作用あり → 遅延評価だとまずい
で、裏を取れば
副作用無し → 遅延評価でも大丈夫
ということで意味的には逆(裏)のつもりだったけど、
書き方がまずくて対偶だと勘違いした。
0232デフォルトの名無しさん
2015/01/22(木) 07:29:09.34ID:yXMo1Viyお前さんがしたいだろう主張の正しい定式化は
(遅延評価が採用されている ∧ 副作用がある) → 動作がまずい
⇔遅延評価が採用されている → (副作用がない ∨ 動作がまずい)
⇔遅延評価が採用されている → (副作用がある → 動作がまずい)
だ。これはお前さんの
(遅延評価が採用されている → 副作用がある) → 動作がまずい
ではない。「flipして戻すと」とか最初からできない。
その時点で逆だの対偶だのと関係なくなってるわ。
0233デフォルトの名無しさん
2015/01/22(木) 07:59:21.85ID:hihrfS9D0234デフォルトの名無しさん
2015/01/22(木) 08:20:28.03ID:yXMo1Viyそれなら「flipして戻す」とかできないだろ。
前2つは「→」で結合されてないんだからな。
0235デフォルトの名無しさん
2015/01/22(木) 08:24:04.14ID:gOPwVEDJflip :: (a -> (b -> c)) -> (b -> (a -> c))
なんですけど…
0236デフォルトの名無しさん
2015/01/22(木) 08:43:59.72ID:C1enpK1Tしぃっ!
0237デフォルトの名無しさん
2015/01/22(木) 08:45:42.60ID:7Blthlt50238デフォルトの名無しさん
2015/01/22(木) 08:46:07.01ID:J1v0x3VwIOを世界状態の関数だと思うと、例外とか並行性で訳分からなくならない?
例えば、mv :: MVar Intのとき、
modifyMVar_ mv (return . (+2))
と
modifyMVar_ mv (return . (+1)) >> modifyMVar_ mv (return . (+1))
は違う意味だけど、この二つが異なる「関数」だと言うのは簡単じゃない気がする
0239デフォルトの名無しさん
2015/01/22(木) 09:12:23.26ID:yXMo1Viyありゃ、そらそうだ。すまんね。だが、それで言えるのは
副作用がある → (遅延評価が採用されている → 動作がまずい)
なので(これは正しい定式だ)、
>>231が「flipして戻す」をしてないってこったね。
0240デフォルトの名無しさん
2015/01/22(木) 09:14:16.99ID:yXMo1Viy>>231は「flipして戻す」はしてるのか。すまんほんとうにすまん。
眠くてボケてるな。
単に対偶とか逆とか裏とかを取るそういう操作じゃないってだけだ。
0241デフォルトの名無しさん
2015/01/22(木) 09:28:26.88ID:m5cyHAPkおかげさまで、遅延評価とHaskell の関わりが解りました。
全域が参照透過だからこそ、遅延評価をデフォルトにできたんすね。
圏論の枠組みで値を扱いたい
↓
Moggi「モナドあれ」
↓
入出力含む全てを参照透過にできた → コンパイラが攻撃的になれるので動作速度も上がった
↓
遅延評価をデフォルトにできた → モジュール性上がった
0242デフォルトの名無しさん
2015/01/22(木) 09:33:24.41ID:luu2eUXma → b だとまずい = a → (b → まずい)
b → a だとまずい = b → (a → まずい)
は両方とも意味は同じなんだけど、同じ意味に対して書き方が二つあって、
左辺の逆、裏、対偶は違うものになるってことだと思う。
0243デフォルトの名無しさん
2015/01/22(木) 09:39:51.90ID:luu2eUXm参照透過にしたい & 遅延評価にしたい
↓
副作用の扱いに困る
↓
モナドを使えば良いことに気づく
だよ。
ちなみにkenokabeが圏論とか言ってるのは完全にデタラメだよ。
0244デフォルトの名無しさん
2015/01/22(木) 09:45:32.68ID:luu2eUXmすまん、これは括弧無しだとさすがにまずかった。
a → (b だとまずい) = a → (b → まずい)
b → (a だとまずい) = b → (a → まずい)
0245デフォルトの名無しさん
2015/01/22(木) 10:03:41.42ID:m5cyHAPkへええ、参照透過も遅延評価も結果じゃなくて目的だったんですか!
Haskell と圏論の繋がりがわかんないです。
そういえば訳本の教科書には圏論のけの字も出てこないし、Preludeではidも(.)もCategoryのクラスメソッドじゃないし、歴史的にはクライスリトリプルをモナドとして基幹に採用して以来、徐々に圏論を取り入れてきた、って感じなんすかね。
0246デフォルトの名無しさん
2015/01/22(木) 10:14:15.85ID:TlerM3muOOP で言うデザインパターンはイディオムだけど、 Haskell では型クラスとして記述可能にしているという違いはある。
つっても、例えばモナドがモナド則を満たすかどうかみたいにインターフェイス以外に必要なルールはプログラマの責任だけどな。
0247デフォルトの名無しさん
2015/01/22(木) 10:22:57.72ID:ZxT+7VDJhttp://b.hatena.ne.jp/entry/qiita.com/kenokabe/items/61d156005c7831c693cd
0248デフォルトの名無しさん
2015/01/22(木) 10:28:47.74ID:m5cyHAPk実際は両方が重要だったってことね。
0249デフォルトの名無しさん
2015/01/22(木) 10:38:43.08ID:y/T1Azr6圏論はデザインパターン、ですか。そういう視点は無かった。勉強になります。
0250デフォルトの名無しさん
2015/01/22(木) 10:53:22.85ID:C1enpK1T0251デフォルトの名無しさん
2015/01/22(木) 11:39:34.25ID:yXMo1ViySystem.Mem ( performGC:: IO() ) 使えば?
0252デフォルトの名無しさん
2015/01/22(木) 12:12:33.73ID:J1v0x3Vw-threadedを付けてコンパイルするとデフォルトで0.3秒のアイドル後に自動GC
https://downloads.haskell.org/~ghc/6.10.1/docs/html/users_guide/runtime-control.html#id2622480
0253デフォルトの名無しさん
2015/01/22(木) 12:16:17.06ID:yXMo1Viy0254デフォルトの名無しさん
2015/01/22(木) 12:25:44.90ID:vPFLQWeixs = 'x' : xs
参照透過の目的はデータ構造を初期化する順序を自由にすること
(関数を定義する順序は元々問題なかった)
xs = foo 'x'
ys = foo 'y'
0255デフォルトの名無しさん
2015/01/22(木) 15:19:16.52ID:C1enpK1T流石です
0256デフォルトの名無しさん
2015/01/22(木) 16:51:17.12ID:JA0C5j9Tそして別エントリとして同じ内容を投稿かwwww
0257デフォルトの名無しさん
2015/01/22(木) 22:03:05.55ID:K0V9CDcS圏論をプログラミング言語の理論に応用してその結果を取り入れようという流れと、
圏論の構造を言語内に取り込もうという流れがあると思う。
モナドの場合はMoggiは前者の意図だったんだけど、Wadlerが後者もやった。
後者は比較的最近の流れで、元々は圏論を取り込もうという目的はなかったと思う。
>>246が言ってるのは後者の話で、Haskellに関する前者の話も沢山ある。
0258デフォルトの名無しさん
2015/01/22(木) 23:32:32.10ID:+0By/pHuクライスリ圏は、名前の通りKleisliという人の研究に基づく。
後に言う Kleisli triple は圏論の一般論の中で整理された。整理された後もしばらくは triple
と呼ばれていたが、複合語を作るときに triple だと困る(字面上意味不明の言葉になりやすい)
ため、MacLaneがモナドという名称を提案した。モナドという名称はライプニッツの単子論から借りてきたものだけど、ただ単に名前を借りてきたというのが実情。
(「カテゴリー」なんかも元々はアリストテレスの哲学に関連する用語の名詞を借りてきたもの。)
ただし、モナドは関手圏における「一般化された半群(モノイド)」とみなせるという事情があり、「モノイド」と音が近い哲学用語として「モナド」が選ばれたというぐらいの意味はある。
以上のことは「圏論の基礎」pp.183-198 あたりをよく読めば判る。そして、この辺のことは数学の内部での動機によって研究されていて、
コンピュータサイエンスとはあまり関連が意識されていなかった。
Moggiは "Computational lambda-calculus and monads" で計算の圏論的意味論を示した。この中で彼は色々な種類の「計算」が
X --> T(Y) という形の「射」として捉えられると主張した。ただし、Tは考えている圏における自己関手。ところで、このような「計算」
の合成可能性を考えると、Tは自己関手であるにとどまらず、モナドであることが要求される。(要点は、T(T(X)) のような「二重の文脈」
を一重つまりT(X) の形に解くことができるかということ)。カルテジアン積を持つ圏を考えるともう少し強い性質が要求されるが、
これが「強モナド」というもの。
Moggiの論文はいくつかの例が取り上げられており、たとえば状態モナドなども扱われている。関数の内部状態のような、数学的には
ちょっと扱いに困るようなものが、Moggiの示した工夫に依ってうまく扱えるということは、「純粋な関数」(従って呼ばれる毎に遷移する内部状態を持たない)
たちとモナドを組み合わせて、「内部状態を持つ関数」などをシミュレートできるということを意味する。
0259デフォルトの名無しさん
2015/01/22(木) 23:39:27.07ID:+0By/pHuじゃあなんで「純粋な関数」に固執する意味があるのか。
個人的にはあんまないと思うけど、一応
1.純粋な関数であれば(呼び出し回数に応じて返す値が変わるようなことはないので)最適化しやすい(ほんとかなぁ)。
2.最外最左簡約のように、「同じ部分式を何度も評価する」ことになりやすい評価戦略を選んだ場合、もし関数の純粋性が保証されているならば
「グラフ簡約」のような最適化手法により、良いコードが生成できる(ことがある)。
なんてことはあると思います。じゃあなんで「最外簡約」みたいなマイナーな評価戦略を使いたいかといえば
・無限リスト、例えば [1 ..] みたいのが余裕で作れて表現力が増す。
ぐらいしか思いつきませんが、とにかく「計算の結果次第で配列の長さが変わる」ような計算を、あまり
チマチマとしたコードを書かずにズバッと書けたりして俺TUEEEできるというのがいいんですかね。
まあ頭いい人は放っておくと変なものを作るということなんだと思います。
0260デフォルトの名無しさん
2015/01/22(木) 23:57:29.31ID:+0By/pHu蛇足。
「最外簡約」は、構文木を根の方から評価しようという評価戦略で、評価の実態からそのように呼ばれている。
一方で、プログラミングする人の気持で、構文木の終端が評価の最後の方にまで遅延されるという印象に基づいて
「遅延評価」とも呼ばれます。
いずれにせよ「遅延評価」をあまり神秘的に考える必要はないです。
0261デフォルトの名無しさん
2015/01/23(金) 02:43:28.47ID:9Ll9FhEC停止する可能性がある計算は必ず停止するというのがあったと思うんですが
それはあまり重視されない?
0262デフォルトの名無しさん
2015/01/23(金) 03:19:59.17ID:jnn1J11N0263デフォルトの名無しさん
2015/01/23(金) 11:34:44.27ID:FG7Cgjgq無限ループは副作用じゃないか
同じ引数で結果が2通り以上になるのは副作用
なら0通りも副作用ではないか
0264デフォルトの名無しさん
2015/01/23(金) 11:58:54.97ID:5jDftkrl>無限ループは副作用じゃないか
f(n) = f(n-1)はたとえば、f(5)=f(4)で、同じ引数なら同じ結果の純粋な関数だ。
単に続けてf(4)も計算しようとするから停止しないだけ。
それが気に入らないなら、停止しないということを「⊥ ボトム」という値で
表現すれば、f(5) = ⊥ は常に成り立つんだからやっぱり純粋性は保たれている。
0265デフォルトの名無しさん
2015/01/23(金) 13:07:46.09ID:FG7Cgjgq0266デフォルトの名無しさん
2015/01/23(金) 13:15:42.27ID:mGGgFMZE0267デフォルトの名無しさん
2015/01/23(金) 13:39:39.55ID:5jDftkrl>⊥はNothingに似てるしMaybeはMonadだから副作用と関係ありそうだけどな
そういう適当な連想ゲームしてっとkenokabeになるぞ。
0268デフォルトの名無しさん
2015/01/23(金) 14:05:12.06ID:FG7Cgjgqだからプログラミング言語がある
0269デフォルトの名無しさん
2015/01/23(金) 15:05:27.84ID:mGGgFMZE0270デフォルトの名無しさん
2015/01/23(金) 16:28:32.03ID:hSE1K7on0271デフォルトの名無しさん
2015/01/23(金) 16:52:38.24ID:mGGgFMZEあんなバカ記事ストックしてる奴らも悪いけど、ある意味すげーわ
0272デフォルトの名無しさん
2015/01/23(金) 17:49:56.81ID:he2eREiv少し読んだら前だけじゃなく後ろからも手斧飛んでて笑った。
何がしたいんだよ。
0273デフォルトの名無しさん
2015/01/23(金) 18:00:53.81ID:FG7Cgjgq0274デフォルトの名無しさん
2015/01/23(金) 22:03:27.40ID:psNR2ovjそれを別のマシンにダウンロードして、そこで元と同じ環境になるようにしたい。
この場合、cabal.sandbox.config ファイルの中に書かれている絶対パスを
それぞれのダウンロード先の環境に合わせて書き直さなければならないの?
たとえば、local-repo: [なんとか]/.cabal-sandbox/packages の値とか。
この [ なんとか] の部分を消して相対パスにしたら、パスが見つからないというエラーが出た。
■ このスレッドは過去ログ倉庫に格納されています