まだアセンション(8,7,7,5)なのにスレスパ2が出てしまった
まだアセンション(8,7,7,5)なのにスレスパ2が出てしまった
Proじゃないや、安い方のPlus
名前を覚え間違えてた
カスみたいな質問は無課金のGeminiに、真面目だったりコンテキストを要する質問はChatGPT (ProのThinking) に投げてる
よく考えれば当たり前だけど、FFIで呼んだ先のライブラリがシステムコールで確保したメモリはGHCのランタイムの-M<bytes>の制限とは関係ないから無制限に使われちゃうな
脳がHaskellになってて忘れてたが、そういえばよくある動的言語ではクロージャがキャプチャするのは変数の値じゃなくて変数そのものだったな
スコープオブジェクトまるごと参照してGCを妨げる実装もむべなるかな
4日間とれなかったバグが解消できてウキウキ
(なんかライブラリのバグのような気がして、間違いなく自分の想定通りの挙動をするようにモンキーパッチしたら全部治った。自分の使い方のほうが間違っていてライブラリの事前条件を破ってしまった可能性があるので未だライブラリのバグとは限らないけど・・・)
謎のバグに苦戦していたが、原因は手書きしたbitsetが単にミスっていただけだった
しかもほんの僅かでもテストしてたら即見つかるようなもの
台風1号!?
別に Natural -> Bool でもできるか
どうやるかというと、`k :: [Bool] -> Bool`に対して
p0 = []
p1 = p0 ++ [k p0]
p2 = p1 ++ [k p1]
...
を計算して、Kleene treeからpnがはみ出したら適当なBoolを返す、という`([Bool] -> Bool) -> Bool`は、一見部分関数に見えるが、**この操作が停止しないような`[Bool] -> Bool`は計算可能でない**ので実は全域関数とかいう話だった
ちなみにChatGPTに"Haskellで`(X -> Bool) -> Bool`を全域関数に限ったら自由ブール代数とみなせる?"って聞いたらこういうのがあるから駄目、って教えられた
「無限長のパスをもたない二分木は有限」というのは計算可能なものだけを考えると嘘
↑怖すぎ〜
なるほど・・・
math.andrej.com/wp-content/u...
「処理系がいっさい存在しなくなっても、それで書かれたプログラムが移植元として有用かどうか」というのは、プログラミング言語としての*固有の*よさを測る方法になるかもしれない
デカ企業が(tsではなく)pursにマンパワーを注ぎ込んだ世界線も見てみたかったとは思う
Equality saturationは別にいらないんだけど、自分が実装してたものがpersistent E-graphのまがい物(凄く遅い)だと気付いたので
なんか `isSet A -> isSet (B -> A)` があると良さげで、これはホモトピー型なら定理(らしい、良く分かってない)だけどMLTTでは`funext`があっても違う・・・んだと思う。`funext`が作るidentityが謎の値だとだめで、`funext (cong_app eq) ≡ eq`みたいになっている必要がある(のか?)
hashtables でも内部実装的には可能に見えるが、実装があるわけではない
freeze/thawができるhashtable, hackage.haskell.org/package/vect... だけっぽい
(もちろんtoList/fromListはいつでも可能だが、効率が全然違うので)
あれ、もしやこれshapeのUIPが要る???
(eq1 : ∀x → f x ≡ x) と (eq2 : ∀x → f (f x) ≡ f x) があって、紙の上の数学ではeq2は無駄だから考えてもなかったけど、`f (f x) ≡ x`の2つの証明 (eq1 (f x) ; eq1 x) ≡ (eq2 x ; eq1 x) が等しいことが要求されてる気がする
あーでもsubstで死ぬほど複雑になるのはCubicalでも変わらんのか、そっちが楽になるのは≡のパターンマッチ(K)の方だ
Cubicalを勉強すべきなのか、汚い形式化であってもゴリ押しで書いてしまうか、諦めてfunextを仮定すべきなのか・・・
オブジェクト指向言語におけるオブジェクトへのデシリアライズというのがそもそもコード生成を含む難しい行為で危ないというのは理解されていて、今回のも「plain old dataより少しだけ高級なデータへのデシリアライズ」と思って実装されていたと思うんだけど、"JavaScriptにplain old dataなど無い"というのが致命傷だったんじゃない?
evalとかFunction("")はともかく、JavaScriptのオブジェクトってプログラマのメンタルモデルにあるオブジェクトからかけ離れたヤバ概念じゃないのか
詳細を見てみると、これ結構な割合でJavaScriptが悪いんじゃないのかと思えてくる
「オブジェクトとhashmapを互いに同じように使える」こと、「動的リフレクションのような慎重に使うべき機能と通常のフィールドアクセスが同等」なこと、「`Function("...")`という激烈に危険な過去の遺物が残っていること」、これらが無ければどんなヘマをしてもRCEまでは行かないよ
ブラウザの機能としてのユーザースタイルシート、2年に1回ぐらいしか必要ないけど要るときは代替手段ないから必須