関数型プログラミング言語Haskell Part34 (667レス)
上下前次1-新
262: 2023/11/20(月)14:32 ID:4MiKC4cJ(1) AAS
>>258
ぎゃははははははは
263: 2023/11/20(月)21:45 ID:Jf1v4QK8(1) AAS
外部リンク:github.com
> Unkown(気づいてない)
ウンコウンわろた。
264: 2023/11/20(月)23:57 ID:N43MAaAU(1) AAS
スレチ
265: 2023/11/21(火)12:01 ID:MS7pneIs(1) AAS
毛の壁くん復活してたのか!!
266: 2023/11/21(火)12:21 ID:W0g+S6dW(1) AAS
外部リンク:archive.md
毛の壁(岡部健)についてはここが詳しい
267(1): 2023/11/22(水)15:27 ID:1OepVPCl(1) AAS
こんなコードがあるのですが
cumsum k = unfoldr next . (,) 0
where
next :: (Int, [Int]) -> Maybe (Int, (Int, [Int]))
next (acc, x : xs) | acc <= k - x, acc' <- acc + x = Just (acc', (acc', xs))
next _ = Nothing
acc <= k-xはわかるのですが、acc' <- acc + xというのはどういう文法なのですか?
リスト内包表記でもないですし条件式の部分でモナドを扱ってるわけではないですよね?
268: 2023/11/22(水)16:31 ID:PuIW3qrN(1) AAS
>>267
パターンガードかな
外部リンク:ja.wikipedia.org
269: 2023/11/23(木)07:24 ID:WRBO39fy(1) AAS
<-はパターンガード修飾子と呼ぶのですね
初めて知りました
ありがとうございました
270(1): 2023/11/24(金)17:42 ID:V3Fz2AWZ(1) AAS
毛の壁のTwitterの新しいアカウントは
Ken140291
FPFSstutorial
leadmove3648637
です!!
271: 2023/12/04(月)12:27 ID:GjmDAseS(1) AAS
>>270
ぎゃっはっはっはっはw
272: 2024/01/01(月)20:17 ID:DcfOChZv(1) AAS
mapAccumL/Rの使いどころがよくわからないのですが
どういう時に使うとかの指針ってありますか?
273: 2024/01/09(火)22:50 ID:3mg8b04T(1) AAS
ここ5年で発売されたHaskellの書籍で最も優れたものを紹介してください
274: 2024/01/12(金)10:55 ID:cAhPSGjh(1) AAS
オワコン
275: 2024/02/29(木)01:38 ID:d2gqoSk4(1) AAS
windowsにインストールできんみたいだなcabalがエラー?
まあwindowsでやるなってことだな
276: 2024/03/03(日)23:47 ID:9XAeTkis(1) AAS
モナドについて、床下配線に例えられたり、世界を受け取って副作用後の世界を返すと(IOモナドについて)語られたりするのが当時は分からなくて、考えた結果
何かから値を取り出し、関数適用して(その関数が)何かに値を戻す「動き」をモナドという。
って結論になっていたのだが、IOモナドも含めてもっと良い例えはないかと考えた結果、
モナドとは、アウトソーシング(外部依頼)を数学的に表現したもの。
という結論に至った。
アウトソーシング先が(数学の)外の世界だとIOモナドで、同じ数学の世界だとその他のモナド。
それならHaskell自身は「この関数実行しておいて~」って依頼出して結果を受け取るだけだから、
副作用はないと言う主張に矛盾はない(のか?)
(もしくは、IOモナドはHaskellが受け取れる形の値を返すような入出力の「マシン語」を返してる?)
そう考えると、数学が「数学の外とのやり取り」という概念を獲得したと思うと凄い。
277: 2024/03/04(月)00:46 ID:XMYw3zR0(1/2) AAS
箱の中に処理したいデータが入ってるけど一緒にIOウイルスも入ってて
普通に箱を開けるとIOウイルスが外界に漏れて困るから
もう一回り大きい箱を用意してその中に箱とデータ処理装置を入れて
密封した上で内側の箱を開けてデータを処理する
そうすると箱の中に処理されたデータとIOウイルスが入った状態になる
これを延々と繰り返すのがIOモナド
ずっと前に毒ガスで考えた比喩だけど最近だとこっちだな
278: 2024/03/04(月)01:02 ID:vyClhVzf(1) AAS
ふーむ。
仮にアセンブラと1対1に対応したCの関数を全部Haskellから呼べるようにすると、出来ちゃうわけで。
(do形式だとまるっきりアセンブラコードに見えるHaskellコードの出来上がり)
そう考えて私のアウトソーシング説が出来た感じですね。
Haskellがモナドを採用したのは数学(関数型言語だったっけ?)の敗北ってどっかで読みましたし。
279: 2024/03/04(月)01:22 ID:XMYw3zR0(2/2) AAS
doの場合は1行ごとに新しい箱が作られてる
順序はたまに前後するけど内側の箱のデータは外側の箱でしか使えないから
必要な順序は保証される
外界の予測不能な状態を全部1つの箱の中に押し込んで
箱の外側の処理装置製造工場は全部予測可能(純粋)にしてる感じ
数学の敗北の意味はよく分からないけど
実用性のために予測不能な状態を持ち込んだことかな
280: 2024/03/06(水)10:29 ID:Yy7OLBEk(1) AAS
なんか大げさな例えを使いたがるやつが増えたなぁ
コーディングの上でなんの役に立つんだが
281: 2024/03/06(水)15:29 ID:soRPwZI7(1) AAS
「末尾呼び出ししたい関数をデータコンストラクタで置き換える」という仮説は役に立つけれども
(>>=)はコンストラクタではないという事実を見ただけで仮説を捨ててしまうことは科学的によくあること
282: 2024/04/10(水)04:46 ID:+L19CyUd(1) AAS
WindowsでghcupをインストールするのにWSLが不要になって
PowerShellだけで導入できるようになってる
283: 2024/04/13(土)09:43 ID:p3ysjEUv(1/2) AAS
rustスレで知ったけどhaskellを正格にして依存型を入れたidris(idris2)つー言語があるんだな
284: 2024/04/13(土)10:37 ID:VEwLcqlL(1) AAS
idrisまで興味があるのならHaskell/Elm/Rust/Zigの流れで開発されているRoc-langも見ておくと良い
特にstatic reference counting周り
285: 2024/04/13(土)22:46 ID:p3ysjEUv(2/2) AAS
色々知らないのがあった、ありがとう
static reference countingつーのが流行りなの
最近のhaskellもrustみたいな1回しかつかえない線形型(linera haskell?)が導入されてるね
286: 2024/04/14(日)08:32 ID:ZXz6cRZI(1) AAS
IOモナドの入力関数も、引数のない関数=変数と捉えると、実質線形型と同じ。
let x = 0 in return (x + 1) >>= x -> print x
こうすると変数xはシャドーイングによって同名の別の変数が生成される。
getLineとかの入力関数はHaskell(数学)の外で初期化される変数とも考えられる。
287: 2024/05/17(金)10:56 ID:kEVlBeR0(1) AAS
参照カウントは0になれば即座にデストラクタを呼び出す
つまり呼び出しを遅延しない
正格にすることと参照カウントを入れることは実質的に同じこと
288: 2024/05/18(土)22:55 ID:HEnIptqp(1) AAS
cabalのバージョン上がってたので
windowsで試したらちゃんと動いたわ
気にかけてくれてたんやな
289: 2024/06/11(火)20:46 ID:zqrBHeqN(1) AAS
IOモナドを拡張して、副作用をDBだけに限定したモナドとか作れないの?
290: 2024/06/20(木)02:22 ID:s4SRXQdp(1) AAS
いつの間にかHaskellがC#より速くなってた…。
外部リンク:nshinchan01.hateblo.jp
291: 2024/06/23(日)11:34 ID:1+Xj+JzS(1/2) AAS
すみません
GHCのWindows11対応についての質問ですが
「9.2」以前のGHCはWindows11をサポートしていないとの事ですが
外部リンク:gitlab.haskell.org
これはプログラムコンパイルをして
アプリケーションを生成できないだけで
コンソール内での実行や学習をする分には
「9.2」以前のGHCでも問題ないとの認識で大丈夫でしょうか。
ライブラリが9.0に対応していない物があり確認したいです。
292: 2024/06/23(日)21:13 ID:1+Xj+JzS(2/2) AAS
度々すみません。
GHCのWindows11対応についての質問の件
Windows11機にGHC8.xをインストールして試した所
問題なくコンソールから実行して
結果のデータファイル生成できました。
取り敢えずはこれでやってみます。
293: 2024/07/03(水)21:32 ID:FVo2vRsM(1) AAS
Functorってf : value -> valueの関数をfmap f : computation -> computationの関数に拡張してあれこれするけど、
そもそもvalue -> value関数がいらなくない?
わざわざvalue とcomputationを区別するから難しくなるのであって、
全部Functor適用した体で computation -> computationの拡張関数だけ使うように
設計しなおせばもっと普及するんじゃない?
294: 2024/07/03(水)23:29 ID:XPii5wC3(1) AAS
何を言っとるんじゃw
295(1): 2024/07/04(木)00:05 ID:CIK9cQRa(1/2) AAS
computationにしたら理論的にカプセル化されるから、例えばT computationで専用に作った関数はU computationでは使いまわしできない。
だから一般的にvalue -> valueで作ることでT computationでもU computationでも使いまわしできるようにしてるというのはわかる。
でも、そういうところが使いにくくて普及してないんじゃないかと思うから、T computationで専用で作った関数も特に何もせず
U computationの関数として使えるようになったらもっと使いやすくなると思う。
というかHaskellにはcomputationの概念は百害あって一利なしなんじゃまいか。
296: 2024/07/04(木)14:17 ID:PVQ//B0J(1) AAS
>>295
君の言うcomputationってどういう定義?
297(1): 2024/07/04(木)19:36 ID:CIK9cQRa(2/2) AAS
しらんがな。
一応マジレスすると、valueと似ているけどなんか違いがあるもの、ぐらいだろう。
自分の意図としては、”計算機”上で生成されたデータ。
計算機というのは電子計算機に限定されない。
電卓でもいいし、そろばんでもいいし、計算するときのもととなる
数の表現とかをcomputationと呼んでも差し支えないと思ってる。
たとえば、
value:27
に対して電子計算機上だと
11011(2)
で表現されるものがcomputation。
そろばんだったらそろばんの玉の配置。
計算してパチパチ音が出るのが副作用。
逆に言うとvalueの方がわかり難いと思う。計算している計算機の外の世界の
何か数的データみたいな感じがしてわざわざそんな区別いるか?と思う。
298(1): 2024/07/04(木)23:38 ID:iUDrYol2(1) AAS
>>297
computationはvalueの一つ
`5 + 3`がcomputation
`Just 8`もcomputation
299(1): 2024/07/05(金)00:05 ID:b38yqPqv(1/2) AAS
>>298
computationがvalueの一つだったら
概念的に computation ⊆ value
になるけど。
少なくとも拡張しているのだから
computation ⊇ value
にならないとおかしくない?
`5 + 3`がcomputationというのは前提にもよるからなんとも言えないと思う。
計算して8(=5+3)を導いたなら8はcomputationだと思うが。
たとえば、掛け算だったとして、九九を唱えてゴサンジュウゴで15を導き出したんなら計算してないからvalueだと思う。
300(1): 2024/07/05(金)00:53 ID:DkqpNxkH(1) AAS
>>299
おかしくないよ
OOPでクラスAを継承してクラスBを作った場合(B extends A)を考えてみたら?
`九九を唱えてゴサンジュウゴの結果を導き出す`のがcomputation
導き出された結果と導き出す計算を区別して
301: 2024/07/05(金)02:03 ID:b38yqPqv(2/2) AAS
やっぱりHaskellスレにcomputationネタわかる人いたんだね。
>>300
>OOPでクラスAを継承してクラスBを作った場合(B extends A)を考えてみたら?
ここは納得。
>導き出された結果と導き出す計算を区別して
なにか f: value -> computation型の関数を念頭に置いて
`f ()`はcomputationと言っているのでは?
意図を勘違いしているかもしれないですが、computationはあくまで導き出された結果でしょう。
それと、関数の返り値を導き出す計算をするにあたって出てくる効果を定義に含めようとしているように感じたのですが、
それはあくまで value -> computation型の関数を計算することに付随する性質であって
computation概念そのものじゃないと思うのですが。
あくまでcomputation概念自体はそういう関数を計算して得られた計算結果なんじゃないですかね。
そう考えると何か不都合な例とかあります?
302(1): 2024/07/25(木)23:56 ID:zdgCFOr2(1) AAS
stateやioモナドってHaskell以外でも使われてるの?
maybeやeitherは関数型でない言語でも同等のものがあるから分かるけど、stateやioはいまいち便利そうな感じがしない
303(1): 2024/07/26(金)05:41 ID:JmafwQnp(1/3) AAS
>>302
それはそうで、IOモナドは他の言語例えばC言語系列だとhoge();の";"部分を数学的に表現しただけだから。
見た目だけなら
x = x + 1;
printf("%d\n", x);
を
return (x + 1) >>= \x -> print x
do形式に直して
x <- return (x + 1)
print x
ただ、x <- の部分は同名の別の変数をシャドーイングしてるので、厳密にメモリの動作まで合わせるならIORefを使う。
Haskellから見たらメモリもIO処理(ファイル処理含む)も等しく外部への入出力という扱い。
だから、実用としては意味が無い。
一見複数行に見えるコードがその気になれば全部一行に出来るという感動はあるが、それだけだ。
Haskellを仲立ちにして数学とプログラミング言語の関係を研究したりには便利。
逆に自力でIOモナドをPythonなどの適当な言語で実装して全てのコードを関数っぽく書ける。
(Pythonだと演算子の自作が出来ないのでf = (>>=)みたいな事になる)
Haskellは便利だから使うものじゃない。
美しいから使うものだ。
あ、でも腐っても最新版は実行速度が結構上がってる(C#/Java並み)ので、選択肢から外される理由も減ってきた気がする。
304(1): 2024/07/26(金)05:47 ID:JmafwQnp(2/3) AAS
そこまで気づくと、Gtk2hsとかWin32とかのC/C++からのラッパーライブラリを関数型言語っぽくない!って拒否する気持ちが分からなくなる。
305(1): 2024/07/26(金)06:16 ID:JmafwQnp(3/3) AAS
あ、IOモナドの利点一応あった。
入力関数が他の関数の引数になったり、他の関数に関数合成出来ない。
Pythonのprint(input())みたいなコードや、len(input())みたいなコードは無理。
ここをしっかり分けることで、そういう変な使い方でのエラーは出ない。
もっと広い視点で言えば、入出力がIOモナドという型で分かれているのでネストの深いループの中でも入出力時に型を意識する必要があるので、そういうバグが大分減る。
手続き型関数型関係なく、ネストの深いループの中のデータが今どんな状態かを頭の中で把握出来る人はそう多くない。
だから、デバッグ時に解きほぐしていくんだが、関数型の方が切り分けしやすいかも?
306(1): 2024/07/26(金)06:20 ID:EERDttnJ(1) AAS
Halkellのその先が見たい?
Rustにその答えが全て詰まっている
307(4): 2024/07/26(金)08:11 ID:3P5OnSpM(1) AAS
どなたか教えてください。
数学の構成や命題の証明に使うならば、HaskellとOCamlはどちらがよいでしょうか。
308: 2024/07/26(金)12:15 ID:f34zQmtT(1) AAS
Rustは、メモリが見えすぎるのがイヤだー
大したもの書かないから、GCありでお願いしたい
309: 2024/07/26(金)17:24 ID:HoH4md/R(1) AAS
>>307
漠然としすぎ
やり直し
310: 2024/07/26(金)17:58 ID:dth0vnjc(1) AAS
数学の構成?
311(1): 2024/07/27(土)00:29 ID:r3Qeb3es(1/4) AAS
>>307
Coqという証明支援プログラミング言語をお使い下さい。
Haskellでも型プログラミングでゴリゴリ自力で命題の証明出来るそうですが、ある程度自動化されている専用言語の方が良いでしょう。
Coqはその中でも日本語情報が多いです。
312(1): 2024/07/27(土)00:43 ID:r3Qeb3es(2/4) AAS
>>306
実用言語、特に組み込み分野を置き換えるのに期待されてる。
特集記事が無くてもお題スレ見たいな、Rustで問題を解こう的な連載が続いてる辺り、
特にinterfaceの編集陣の熱量は感じる。
Haskellも先駆者の記事によればWeb向けとしては神言語だそうだ。
ただ、周辺環境が未整備なだけで。
(なので、自分で全部作るという茨の道を進む「覚悟」が必要だとか)
未だにそうではないことを祈るが…。
313(2): 2024/07/27(土)00:53 ID:r3Qeb3es(3/4) AAS
>>307
数の構成の方は、代数的型と基本的な方だと(一部)derivingで自動生成してもらえるから、Haskellはとても楽。
print関数で表示する部分だけでも自動生成してもらう価値はある。
(Read,Enum,Ordで生成されるのは確認済み)
data Nat = Zero | Succ Nat deriving (Show)
連続関数はPCそのものの限界で無理。
代数的型でメモリの続く限りの範囲なら少数も作れるかもしれない。
(その前にリストなり何なりで10進数位取り記法を導入しないと、Natは無限進数なので小数点第1位が1万とか、無限に桁上がりしない構造になる)
314(1): 2024/07/27(土)13:46 ID:f/jP9uGd(1) AAS
>>307
結局こいつがなんの返信もしてない時点で適当に書き込んでたってことがわかるよ
真面目に相手をしないほうがいい
315: 2024/07/27(土)16:19 ID:Z663WedI(1) AAS
>>313
ありがとうございます。
316(1): 2024/07/27(土)17:29 ID:sW1zoNGb(1) AAS
>>311-313と>>314は同一人物だよ
騙されないで
317: 2024/07/27(土)21:26 ID:wvv58UYW(1) AAS
知ってた
318: 2024/07/27(土)23:34 ID:r3Qeb3es(4/4) AAS
>>316
他人を語ったつもりもないけどね?(ID見れば分かるんだし)
ちなみに>303-305も私だ。
1日2-3回くらいしか見に来ないから、書き込めることはまとめて書き込んだ結果です。
319(1): 2024/08/01(木)12:24 ID:XzWUPxYY(1) AAS
プロセッサメーカはAIブームと見るやこぞってAI処理特化プロセッサの開発競争
関数型言語に特徴的な処理に特化したプロセッサは誰も作ってくれない
320: 2024/08/01(木)16:36 ID:rWBa8MOA(1) AAS
それ必要か?
321: 2024/08/04(日)23:21 ID:y1wQ9MUm(1) AAS
>>319
スタックコンピューターは、Lispの時にぽしゃった。
322: 2024/08/05(月)21:33 ID:FcOscapW(1) AAS
日本企業がLisp専用マシン作ったが第五世代コンピュータプロジェクトが💩で何らまともな成果をあげられなかったからね。
323(1): 2024/08/11(日)17:42 ID:7wNJGHOt(1) AAS
麓から山頂を目指す
foldl: 徒歩で登り切ったら滑り台で向こう側へ降りてゴンドラで再び山頂へ戻りゴール
foldr: ゴンドラでいきなり山頂へ。そこから向こうの麓まで滑り台で降り、そこから山頂へ徒歩で戻る。但しある場合は滑り台を途中で降りてそこから山頂へ徒歩で戻ってゴールにしてもよい
こういうこと?
324(1): 2024/08/12(月)21:44 ID:EAbaqMlq(1) AAS
Preludeのライブラリドキュメントのページが最新のChromeでよく応答なしになるんですが!
現代PCでもプチフリを起こすページとか凄いですね!(怒)
325: 2024/08/13(火)01:44 ID:3Ko8/FbA(1/2) AAS
>>324
hoogle使いんさい。
326: 2024/08/13(火)01:45 ID:3Ko8/FbA(2/2) AAS
>>323
foldl = 末尾再帰を高階関数化
foldr = 普通の再帰を高階関数化
327: 2024/08/15(木)10:15 ID:oieuoNWz(1/2) AAS
yesod を導入しようとして調べているのですが、今は stack 前提で cabal での利用は考えられていないのでしょうか?
導入記事では cabal の記述がありますが、
yesod init すると stack new 使えと表示が出ます。
328: 2024/08/15(木)10:30 ID:oieuoNWz(2/2) AAS
yesod-bin 1.6.2.3 です
329: 2024/08/19(月)21:35 ID:CkMOJkdv(1) AAS
rambda.jsのfold相当の関数を教えてください
330: 2024/08/24(土)05:56 ID:WHJg2+SV(1) AAS
今ってghcupの時代じゃないの?
久しぶりにHaskell書こうと戻ってきた浦島太郎がstackを最新にしようと思ったら
ghcupとか紹介されてミーハーだから飛びついたわ
331: 2024/08/24(土)07:38 ID:E4GXjFrz(1) AAS
Gカップ、ハアーハアー
332(2): 2024/08/28(水)21:41 ID:HNkudrYA(1) AAS
Youtubeでしばらくの間丁寧にHaskellを解説していた人が
ある日「やってらんね、俺はもうHaskellでプログラミングしない」と宣言してHaskellから離れたのを見て
所詮その程度の言語なんだなとガッカリした
333: 2024/08/28(水)23:56 ID:FNkSebMV(1) AAS
>>332
Haskellはモナドの実証言語という側面が強いから、モナドは結局よくわからないものという結論に達した今では話題もないし、Haskellで視聴回数稼げないんじゃない。
334(2): 2024/08/29(木)12:50 ID:D5XAFbVY(1) AAS
自作ライブラリの(+)とPrelude.+が被って、Prelude.+使いたい時一々修飾するの面倒くさいしコードも汚くなります
被った時はデフォルトでPrelude.+を使うよって指定することはできないのですか?
335: 2024/08/29(木)12:53 ID:1jszJs3n(1/2) AAS
>>332
+1
336: 2024/08/29(木)12:54 ID:1jszJs3n(2/2) AAS
>>334
自作の方を修飾
337: 2024/08/29(木)14:06 ID:gtm/5H5m(1/4) AAS
>>334
両方使う予定があるのに、何故わざわざ同じ記号にしたのか…。
自分は自作の方を(.+)とか、微妙に変えてる。
338: 2024/08/29(木)14:06 ID:gtm/5H5m(2/4) AAS
使用例:
1 .+ 1
>2
339(1): 2024/08/29(木)16:27 ID:Nq0HdWD9(1) AAS
やだやだ!修飾したくない!
どっちの+か特定して自動的に選択してよう!
340: 2024/08/29(木)16:57 ID:YXIyrRhD(1) AAS
何の自作型だか知らんがSemigroup実装して(<>)にでもすれば
341: 2024/08/29(木)17:40 ID:aIGVGYPU(1) AAS
就職しろよ
342: 2024/08/29(木)20:48 ID:gtm/5H5m(3/4) AAS
>>339
独自の(+)を自動で使い分けてもらうにはNum型クラスのインスタンスにする必要があるけど、それでも見分けるには型が違わないといけない。
独自の(+)は、独自の型を受け取りますか?
そうじゃないとPreludeの(+)と判別する術がないけど。
343: 2024/08/29(木)20:51 ID:gtm/5H5m(4/4) AAS
あ、できれば型宣言を見せて貰えるとアドバイスしやすい。
344: 2024/08/31(土)21:17 ID:XbdVGeAf(1) AAS
ワカランドとして .+. と .-. と .*. を定義することにしました。しかし本質的に解決するにはNumクラスのインスタンス宣言するらしいですね。
しかし独自型同士の+と-、Rationalとの*、Rationalとの/はできますが、
独自型同士の*、独自型同士の/は定義不可能です。
従ってNumクラスになることはできませんでした。
結局どうしていいか判らんどからのワカランドで落ち着きました。
345: 2024/09/03(火)18:48 ID:yXFMfbtr(1) AAS
もしかしてData.Mapって遅い?
一日中検索かけてるような処理なら、もうMapを卒業するべきときか・・・
346: 2024/09/04(水)00:16 ID:r/FGXedG(1/3) AAS
Data.Mapというより、リストが遅い。
とりあえずコンパイルの際にghc -O2とかghc -O3とかの最適化掛けてみる。
それでもなお速さを求めるなら、ByteStringとか使うと良い。
もしくは、正格評価版HaskellことIdris 2やRustに乗り換える。
(Idris1と2で互換性が無いらしく、別言語扱いされてる)
Haskellで速さを求めるとバッドノウハウが増えて本末転倒になる。
(そこまで苦労するなら素直に速い言語覚えた方が楽。それでも9.10.1はC#並みにはなった?かな?)
347(1): 2024/09/04(水)15:29 ID:ZA+d8/X/(1) AAS
リストが遅い、しかし多くのデータ構造の構築はリストから(fromList)。
つまりコンストラクション回数をいかに減らすか、一度コンストラクトした物を使いまわすか、ということですか
348(1): 2024/09/04(水)16:12 ID:LSV34QaC(1) AAS
lisp系言語はリストの操作が速いのに…
349: 2024/09/04(水)22:00 ID:r/FGXedG(2/3) AAS
>>347
そういう事。
そして、そういう事を考えさせる時点でどうなの?ってのもある。
文法好きだし、普段使いで困らないけど、速さ求めるなら他の言語使うよねって。
350: 2024/09/04(水)22:22 ID:r/FGXedG(3/3) AAS
>>348
遅延評価だからってのも地味に大きい。
自分はプログラミング言語「数学」の(未完全な)実装として見てるので、遅延評価じゃないと困るが。
351(1): 2024/09/05(木)00:27 ID:mpd8c2G1(1) AAS
普段使いって何してんの
エロ画像収集とか?
352: 2024/09/05(木)04:50 ID:l0HQxOqp(1) AAS
PythonやPerlの代わりにテキスト処理に使ってる。
353: 2024/09/05(木)18:56 ID:k3Tfomjz(1) AAS
>>351
それ面白いと思って書き込んでんの?
354: 2024/09/06(金)09:50 ID:zzPaKLb6(1/2) AAS
ブラウザでリンク画像が 画像リンク[php]:host
みたいになってて最終的に jpg が表示されてるんだけど
画像リンク[php]:host をブラウザで開いても
jpg じゃなくて jpg ファイルのイメージがテキストファイルみたく表示される
こういうのは hoge.php の造りが悪い(たぶんhttpヘッダーが可笑しい)んだろうけど
じゃあなんで元頁では画像が表示されてたのかとか疑問は残る
それはともかく欲しいのは jpg ファイルなので
ブラウザに頼らずダウンローダーを描いた
355: 2024/09/06(金)09:52 ID:zzPaKLb6(2/2) AAS
補足
修正前: jpg ファイルのイメージ
正: jpg ファイルのバイナリデータ
356(1): 2024/09/07(土)19:33 ID:9PXNQc4Q(1/2) AAS
長大な処理となる関数を実行途中にRAM使用量が嵩んでいくとします
中には解放できる部分もある場合について、
このままガベコレせずに進んでいったらいずれOSが『君にはもうRAM貸せないよ』と言ってくるでしょうが、ランタイムシステムは
?その時になってようやく解放できる場所がないか探し出す
?-i 今必要な最低限の確保ができたら即そこに記録して終わり
?-ii 強制的にminorGCを発動して、即そこに記録して終わり
?-iii 強制的にMajorGCを発動して、即そこに記録して終わり
?-iv 強制的にBlockingMajorGCを発動して、即そこに記録して終わり
?-v もはや解放できる場所は見つからないと判断したら例外終了
?何もせず例外終了する
?その他
どれですか?
357: 2024/09/07(土)19:35 ID:9PXNQc4Q(2/2) AAS
文字化けしちゃいました。文字化けした?は1、2,3だと思ってください
358: 2024/09/08(日)00:17 ID:m7MeNrY2(1) AAS
loop s なんちゃらかんちゃら
= do
let final_score = long_thunk_score + s
s' = sをなんちゃらかんちゃら
modify' $ Data.Map.Strict.insert key final_score
unsafePerformIO ( evaluate $ rnf final_score ) `seq` loop s' なんちゃらかんちゃら
このStateモナドは、final_scoreは状態Mapへ挿入される時はWHNFでしょうが、直後の行で完全に評価されています
この事はマップに挿入されたfinal_scoreへ影響を与えますか?
つまりマップへ挿入済みのサンクとしての値を後からUnsafePerformIOとevaluateとrnfを組み合わせて狙ったタイミングでRNF化できますか?
359: 2024/09/09(月)11:45 ID:CQiqzRbc(1) AAS
>>356
黙って動いてるフリをする
360: 2024/09/26(木)23:16 ID:eAiUCVhs(1) AAS
この言語まだ息してるのか?
361(1): 2024/09/27(金)00:41 ID:ppX7mFe8(1) AAS
おまいらは圏論はちゃんとマスターしたか?
最近圏論のお勉強流行ってないみたいだが
362: 2024/09/28(土)08:56 ID:boijaUwp(1) AAS
そもそもHaskellに圏論必要ないよ
363(1): 2024/09/28(土)11:20 ID:szplrxFB(1) AAS
背景の理論を理解してないとbrainf*ckと同列のクソパズル言語にしか見えない
364: 2024/09/28(土)11:30 ID:D4fCa7Ze(1) AAS
米田の何ちゃらの辺りで心が折れて終了
365: 2024/09/28(土)11:48 ID:M6f6jLKS(1) AAS
>>363
> brainf*ckと同列のクソパズル言語
話がそれるけどbrainf*ckがパズル言語なのは100%その通りだよ
しかし構文パーサー、インタープリターやトランスレーター、JITエンジンの実践入門として
丁度良いからこれだけ根強い人気なんだぜ
366: 2024/09/28(土)20:40 ID:SDDTPU1M(1) AAS
>>361
流行ってないのか…。
個人的にはHaskellよりも圏論の方に関心が移ってるのに…。
んでも、圏論はHaskellでなくても、全てのプログラミング言語の裏側でも動いてるし、それこそ算数の裏側でも動いてる。
モナドが表に出てきてるからHaskellには圏論が必要って思うかもだけど、モナドって言わないで do形式だけ教えて知れっとしてても良いし、「こういう動きの演算子」としてモナドを紹介するだけでも良い。
受験数学とちゃんと向き合う数学みたいなものだけど、変にモナドを理解しようとすると深みにはまる。
(それはそれで楽しいけど、楽しめる人だけだよね…)
367: 2024/09/29(日)07:33 ID:bBvJfaeS(1/2) AAS
ラムダと束縛変数をマスターしなければdo記法もマスターできないのを
すっかり忘れるぐらいポイントフリーが普及してるでしょ
368(1): 2024/09/29(日)08:45 ID:3/NLN/+f(1) AAS
コーダーが数学の学習に使える時間なんて限られている
時間や基礎知識が足らないので、難解な数学を攻略するのはほぼ不可能
大学生時CSや数学の講義で身に付けておくしかない
369: 2024/09/29(日)09:32 ID:twIz68VA(1) AAS
難解な数学を攻略できるなら
日本ではコーダーにはならないよな
370: 2024/09/29(日)10:15 ID:AteoOTMZ(1) AAS
業界入るのに難解数学不要
プログラミングにも不要
数学分からんのでgoogle入るのは無理だけど
371: 2024/09/29(日)11:01 ID:bBvJfaeS(2/2) AAS
人工的なルールに依存するのがクソパズルだが
自然界でなおかつ野生のマウンティング的なルールにも依存しないことが数学の目的のひとつだね
372(2): 2024/09/29(日)20:36 ID:JU2vTa1F(1) AAS
圏論が全てのプログラミング言語の裏で動いてるとか適当なこと書くなよ
373(2): 2024/09/30(月)00:30 ID:Kh4w53R0(1/2) AAS
>>368
高卒の自分でも理解できるんだから、難しいわけではないんだけど。
何度も出てる通り、必ずしもモナドを理解する必要はないし。
そもそも自分がプログラマーの頃だって、12-13時間働いた後も新しいプログラミング言語や数学勉強してたぞ。
(新しい仕事のために学びたくない言語に時間使う事も)
高卒が圏論みたいな大学数学学ぶには専門用語がそもそも分らんから、用語が分かるまで遡った。
(アーベル圏のアーベルが分からないレベルからのスタート)
自分に投資できないと淘汰されるぞ。
374: 2024/09/30(月)00:59 ID:Kh4w53R0(2/2) AAS
>>372
適当じゃない。
モナドは(主に)逐次処理に現れる構造なので、Haskellのような遅延評価で逐次処理自体を作らないといけない(逐次処理をエミュレートするためのモナド)言語でない限り、意識することすらない。
(だからC言語で言う i = 0; の「;」とか言われる)
375: 2024/09/30(月)03:08 ID:g+sPZSfB(1) AAS
>>372
沈黙させる努力をするよりも(全ての)人の話を聞くのをサボる方が良い
努力は時間がかかる
一瞬で報われるものは努力ではない
376(1): 2024/09/30(月)12:40 ID:+8KmLjt4(1) AAS
圏論の極々一部のモナドを主語をデカくして圏論ガーとか言ってる人は何も分かってないんだなと思うけどね
俺みたいに数学かじってた人からすると
圏論を勉強すると「あ、この概念はこの分野のこれのことか」ってわかるけど
そうじゃない人は何のことを言ってるのかわからんと思う
専門家でも自分の担当外の圏なんて知らないのに
圏論という括りで語ろうとする人はそういうのすら理解してない
377: 2024/09/30(月)13:52 ID:CD9F70e/(1) AAS
やっと普通の人が出てきて安心した
378: 2024/09/30(月)13:59 ID:pkON+G7q(1) AAS
>>376
数学者向けの圏論の教科書の応用、具体例は全て数学。
数学知らない人が読んでも分かるわけがない。
応用、具体例、演習をCSの分野から採った教科書が望まれるが、書くのが難しい上に面白くするのも困難。
大体CSすらちゃんと修めてないエンジニアはやはり読めない。
CS自体ベースに位相、代数、グラフ理論と数学使うし。
379: 2024/09/30(月)14:09 ID:rwCIuc1C(1) AAS
趣味でやる人に良くいるんだよね。
応用各分野に囚われずに、圏論そのものを学習したい、一般圏論を研究したいって人。
これは数学で言うと、集合論と同じく数学基礎論の分野。
380: 2024/09/30(月)19:05 ID:8C0MP56i(1/3) AAS
操作的意味論とか表示的意味論でプログラムを数学の話にして、その数学を圏論で整理するって話
だからアーベル圏とか具体的な圏はあんま出てこない。
やるとすれば
デカルト閉圏:ランベックがλ計算のモデルになると発見して関数型プログラミング的に重要
クライスリ圏:Moggiが計算効果をカプセル化したときの根拠の圏
ローベア理論:代数的効果をちゃんと理解するときは必要らしい。操作的意味論と表示的意味論と同じようにモナドの理論と妥当性が成り立つようだ。
ぐらいじゃね。
381: 2024/09/30(月)21:09 ID:CVtPTYpb(1/2) AAS
じゃあラムダ計算(のモデル)だけを考えよう
タプルや代数的データ型は使わない
それでもモナドの具体例を作れるのを知ってるのが専門バカ
知らないのが一般国民だ
382: 2024/09/30(月)21:29 ID:8C0MP56i(2/3) AAS
一般国民。
λ計算のモデルでモナド作ってなにかいいことあるの?計算効果結局表現できないんじゃ?
拡張してcomputational lambda calculusやるって話?
383: 2024/09/30(月)21:47 ID:CVtPTYpb(2/2) AAS
ないんじゃないか
ただ「具体例を出せば、いいことがある」とは誰も言ってない
というファクトをチェックするのは悪いことではない
384: 2024/09/30(月)21:53 ID:8C0MP56i(3/3) AAS
いいこと(メリット)があるから具体例が作られると思うんだが。
それは単に具体例の適用が間違ってるって話じゃね?
なんとなく作れるから群構造作ってみましたとかとか目的不在で作ったらそら何がいいかわからんし。
モナドだったら、各計算効果を圏(クライスリ圏)の中に閉じ込めることに成功しました(カプセル化)。
計算効果は強モナドの構造を取っているようです(計算効果の研究のとっかかり)。
みたいないいことあるから流行るんでしょ。
385: 2024/10/01(火)04:04 ID:PZ96E01/(1/2) AAS
別にそれ圏論を持ち出す必要ないよね
ハイおしまい
386: 2024/10/01(火)09:39 ID:KbL1rq/V(1/2) AAS
>なんとなく作れるから群構造作ってみました
ルービックキューブのことか
387: 2024/10/01(火)09:46 ID:y60InQ2q(1) AAS
数学屋さんもね
研究では圏を使うが
学生に教えるときは
圏を記述に使わず教えたりする
388: 2024/10/01(火)19:23 ID:7kn4RxVI(1/2) AAS
圏論の話題になったから振ったのに。まあいいよ。
圏論根拠で(ソフトウェア工学的にじゃなくて)数学的にカプセル化が実現されてるってすごい
ことだと思うけどね。
>ルービックキューブのことか
ルービックキューブ解くという目的あるんなら構築する意味あるんじゃない。
上下前次1-新書関写板覧索設栞歴
あと 279 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.105s