Closures vs Objects

2024/02/19(月) 20:39:15.91ID:VT95BnI9
It is well-known that closures and objects are equivalent. So are actors. Which one is the most fundamental?

よく知られたように、クロージャとオブジェクトは等価です。アクターも同様です。どの概念が最も基本的なのでしょうか?
2025/02/22(土) 00:26:40.81ID:2igDN88l
>コンテナも制約を受けるとわかっているならなぜそちらも型パラメータにしないのか?

あなたがそうしたけりゃそうすりゃいいだけの話
「集合Gは群であるとする」といっている人に対して、
「群構造は二項演算*、単位元e、逆演算・^(-1)にも依存するのに、なぜ(G, *, e, ・^(-1))と書かないのか」とか言っているようなもん
そう書きたきゃそう書けばいい
俺はめんどくさいからそうしないだけ
2025/02/22(土) 00:28:08.00ID:BHZ6xlR+
バカだから不利となる動的生成しようとしてるのだろう
そのケースは静的で済む
2025/02/22(土) 00:31:03.33ID:2igDN88l
>>197
静的で済むならそれでいいじゃん
型なんだから
2025/02/22(土) 00:34:02.62ID:2igDN88l
型を動的に生成する、つまり実行時に決まる値に型が依存していても、コンパイル時に検査できる場合はある

ということが分かっていない?
2025/02/22(土) 00:36:50.14ID:fju1Vmb5
>>195
収容するコンテナ型Cと一意となるフィールドの型Fの二つの型パラメータを持つ型となるため、
CとFの両方が必要ですね。
CもFも様々な型を取り得るため、
二つとも必須となります。
2025/02/22(土) 00:37:58.92ID:2igDN88l
たとえばList nで長さnのリストを表すとする
nが実行時に決まる値だったとしても、関数
concat: List n -> List m -> List (n + m)
の型はコンパイル時にチェックできる
2025/02/22(土) 00:39:25.47ID:2igDN88l
>>200
うん
だから、そう書きたきゃそう書けばいいじゃん
2025/02/22(土) 00:42:20.87ID:fju1Vmb5
>>201
いずれもList型なので、
そのケースは静的に型が定まっていますね。
2025/02/22(土) 00:45:02.92ID:2igDN88l
正直、あなたの意図がよくわからない
こちらの言っていることが理解できないのか、わざわざこんな辺鄙なスレでよく分からん難癖をつけるのが楽しいのか
2025/02/22(土) 13:49:24.39ID:3Aku5oEk
型を動的に作るなんて、RailsのActiveRecordとかごく一般的に行われていることだと思うが
2025/02/22(土) 14:03:06.41ID:o5bbno7I
>>205
それはRubyがスクリプト言語に過ぎなくて動的型付け言語だからだよ
まともな普通の言語は静的型付け言語なのでActiveRecordのようなO/Rマッピングも静的型付け
2025/02/22(土) 14:54:10.02ID:H7FLchaf
>>206
そもそも動的型付け言語・静的型付け言語なんてものはない。
型検査をコンパイル時に行うかどうかは、処理系の実装方法に過ぎない。
また、型が実行時の値に依存していても、コンパイル時に検査することは可能(>>201

あなたは前提知識が足りてなさすぎる
2025/02/22(土) 15:46:05.77ID:IIYOJqnw
言語のセマンティクスと実装は分けて考えるべき
2025/02/22(土) 15:57:38.39ID:es3U9V0K
>>207
あなたが混同してる
型検査をコンパイル時に行うかどうかは規格、セマンティクスの領分で
実行時の値とされているものを静的にチェックできる範囲でチェックして警告を出したりするのは実装の領分だろう
2025/02/22(土) 16:05:21.30ID:W3fSq5/I
>>207
その両者は明確に分かれてる
動的型付け言語は実行の途中で初めて型が確定しうる
静的型付け言語は必ず実行前に全ての型が定まる
これらは言語仕様で定まる

静的型付け言語は型の安全性やパフォーマンスに優れている
C/C++, Fortran, Go, Haskell, Java, OCaml, Pascal, Rust, Scala, Swiftなど
スクリプト言語以外は静的型付け言語が多数派
2025/02/22(土) 16:35:21.85ID:N/T45y64
>>209
>型検査をコンパイル時に行うかどうかは規格、セマンティクスの領分で
>実行時の値とされているものを静的にチェックできる範囲でチェックして警告を出したりするのは実装の領分だろう
>>207はまさにそう言っているのだが
2025/02/22(土) 16:51:46.18ID:1JZL08Pv
もうブログかなんかに書いててくれないか
2025/02/22(土) 16:53:22.31ID:W3fSq5/I
静的型付け言語はその言語仕様により
常に全ての型を静的に(=実行前に)確定できる
これは言語仕様により定まることであり実装とは関係ない
2025/02/22(土) 16:54:54.90ID:1JZL08Pv
妄想乙
2025/02/22(土) 17:46:21.34ID:GOJ2wF4D
実行速度の速い言語がすべて静的型付けな点が答えだろうね
素人向けのスクリプト言語は動的型付けで遅い
2025/02/22(土) 18:03:51.25ID:NU7N7MY+
>>210
しれっとHaskell混ぜるなってのw
2025/02/22(土) 19:31:02.81ID:wKCHVlKT
馬鹿が常駐して終わったスレ
さよなら
2025/02/22(土) 20:19:25.50ID:FTk8qZlg
無意味な動的型付けにこだわってるのは一人だけだから無視すればよいだけかと
型推論の進歩により静的型付けの唯一の弱点も消えた
型指定を省略できるクロージャなどその典型例
2025/02/22(土) 22:50:21.56ID:bh0ZAEWN
>>218
> 動的型付けに拘ってる
書かれていることを正しく読もう
2025/02/22(土) 22:56:32.72ID:bh0ZAEWN
>>187は動的型付けとは何ら関係がない
むしろ、直後に指摘されているようにほとんどのケースでコンパイル前に検査できる
2025/02/23(日) 02:25:36.50ID:tIjZB/Ol
型が第一級オブジェクトの言語は、論理学でいえば命題を量化できる二階述語論理に相当するわけだ
2025/02/23(日) 03:10:06.06ID:ojjdIlYs
f x = 10
g y = 20
h z = 30
h . g . f 10 -- 30
2025/02/23(日) 03:10:58.23ID:ojjdIlYs
hの定義内で途中の計算結果10, 10, 20を参照するにはどうするか
2025/02/23(日) 04:40:15.50ID:upqukZrZ
トランポリン
2025/02/23(日) 06:54:06.73ID:jtLYghc/
h z x y = 30にする
226デフォルトの名無しさん
垢版 |
2025/03/09(日) 23:01:10.03ID:eGDnXODc
>>223
途中を参照したいなら関数の返り値を複数にして返していく
途中を表示したいなら関数を副作用アリにする
2025/03/14(金) 17:25:51.81ID:TOg9uiCJ
S式
(+ 1 (* 2 3))

RPN
1 2 3 * +

CPS
1 >> (x ->
2 >> (y ->
3 >> (z ->
(y * z) >> (m ->
(x + m))))))

Do記法
x <- 1
y <- 2
z <- 3
m <- y * z
x + m
228デフォルトの名無しさん
垢版 |
2025/06/17(火) 21:17:24.66ID:66zQf9l5
はぁ? クロージャって何すか?
クローゼットのことですか?

プログラマ「もういい」
レスを投稿する