[過去ログ] 「数学」をプログラミングするには (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
834: 01/14(火)21:07 ID:KUHcAlDi(1) AAS
君に要るかどうかは関係ない
835: 01/15(水)00:39 ID:v8xz0BVe(1/2) AAS
`f1 = Foo 1`なら、f1の型は`Foo 1`
基本的にはこれでいい
`Foo 1`は `{n: Nat} Foo n`のサブタイプ
`f1`を`Bar :: t -> s`に渡せるのは、`Foo 1`に変換する規則が存在するとき
型検査はそれをコンパイラがチェックすればいい
836: 01/15(水)00:39 ID:v8xz0BVe(2/2) AAS
`f1 = Foo 1`なら、`f1`の型は`Foo 1`
基本的にはこれでいい
`Foo 1`は `{n: Nat} Foo n`のサブタイプ
`f1`を`Bar :: t -> s`に渡せるのは、`Foo 1`を`t`に変換する規則が存在するとき
型検査はそれをコンパイラがチェックすればいい
837: 01/15(水)00:45 ID:2eRf9tIs(1) AAS
ユーザー定義関数から値返せないじゃん
838: 01/15(水)00:50 ID:LknHRWOL(1) AAS
型は実体ではなく注釈か
839(2): 01/15(水)01:13 ID:xsuF+zK/(1) AAS
型っつっても所詮は構造体に名前がついただけ
計算の過程や性質に型付けをしたいんだ
「関数fを抜けたタイミングで、ポインタpは必ず指定の条件をみたす場所を指していなければならない」
こういうのを型で保証したいんだ
840: 01/15(水)01:33 ID:Yf+/cXFX(1) AAS
ぬるぽは実行前に排除する
841(1): 01/15(水)06:39 ID:xj5qHVfP(1) AAS
>>839
理解浅すぎ
数学勉強してないでしょ
842: 01/15(水)08:07 ID:ogU0rXVD(1) AAS
>>841
君が数学で研究職に就いているのでなければ、まず間違いなく君よりは理解してるよ
843: 01/15(水)08:10 ID:zm/Y+w4S(1) AAS
>>839
実行時のアサーションで書けることは、型にできる
844: 01/15(水)08:19 ID:Uf2ceum5(1) AAS
二分探索やクイックソートのロジックが正しいことを型で証明できるか
845: 01/15(水)08:32 ID:nE+pEHV1(1) AAS
数学的帰納法で証明できる
(長さ1の配列に対しては自明
長さ1, 2, ..., k-1に対して正しいと仮定して、長さkに対して証明する)
そのような構造はF代数で定式化できる
846: 01/15(水)08:56 ID:3W/U+R8x(1) AAS
アキュームレータを再帰的に更新していくようなのはF代数に抽象化できる
847: 01/15(水)19:07 ID:8y1isLBr(1) AAS
オブジェクト指向はオワコン
848: 01/16(木)02:12 ID:hp6XExKo(1) AAS
抽象データ型、凝集度、関心の分離などの既存の概念だけで簡潔かつ正確に説明できることをわざわざバズワードに言い換えただけのクソ概念
849: 01/16(木)03:23 ID:DBY13IoQ(1/2) AAS
形式論理とかまじで役に立たんからな
850: 01/16(木)08:27 ID:L1OHI3Vu(1) AAS
実は当たり前にやっていること。関数適用はmodus ponensに相当する
851: 01/16(木)18:56 ID:DBY13IoQ(2/2) AAS
でも役に立たないでしょ
少しは文章読めよガイジ
852: 01/16(木)20:35 ID:FAOk1woG(1/2) AAS
型情報からあまり使ったことない関数でも使い方にあたりがつくのは便利だと思うけどお前はそうではないんだな
853: 01/16(木)20:51 ID:Wo2SWLBc(1) AAS
複素数型も四元数型も定義可能だし、GPUに組み込んで高速で並列演算できるようにしてやれば科学界に革命を起こせるな
854: 01/16(木)21:51 ID:zFtBKiS0(1) AAS
処理系がcall/ccをサポートすることは、直観主義論理に背理法を加えることに相当する
855: 01/16(木)22:19 ID:FAOk1woG(2/2) AAS
研究者の名前がなかなか思い出せなかったがGriffinだな POPL 1990
856: 01/16(木)22:28 ID:l7++KB1R(1) AAS
イマドキ型のない言語なんて、即席のスクリプトくらいにしか使わんでしょ
857(1): 01/16(木)22:31 ID:IceLMl7e(1/2) AAS
代数的データ型やパラメータ多相を使えばプログラムのかなり多くの性質をコンパイラが保証できるのに、わざわざ型検査なしで注意してコード書くとか馬鹿のすること
858: 01/16(木)22:36 ID:IceLMl7e(2/2) AAS
人類未曾有のソフトウェアを書くならともかく、巷のプログラムの9割近くのコードはただデータを整形してマッピングしてるだけ
あとの一割は既存のライブラリの呼び出し
現代のプログラミング言語の型システムがあれば、IDEの入力補完に従ってるだけでバグの無いコードが書ける
画面にらみつけてロジック確認なんかしてんのはただのアホ
859: 01/16(木)22:51 ID:fgdrajER(1) AAS
しかし、それができるなら動的型付けの言語でもエディタが構文から型推論すれば同じことができるのでは?
860: 01/16(木)23:35 ID:N/7GMQUm(1) AAS
ところがどっこい
型注釈無しでは型推論ができない、あるいはエラーにすべきか型チェッカが判定できないケースが存在する
まず簡単なのは、ユニオン型だ
f:: () -> Int | Str
みたいな関数は注釈なしでは、ふたつの箇所で異なる型を返してるのが間違いなのかどうか型チェッカには判定できない
パラメータ多相を使う高階関数も型推論が困難だ
map :: (a -> b) -> [a] -> [b]
これがたとえば二カ所で
map :: (Str -> Int) -> [Str] -> [Int]
map :: (Str -> Str) -> [Str] -> [Str]
と使われていたら、型チェッカは
map :: (Str -> Int|Str) -> [Str] ->[Int]|[Str]
だと推論するかも知れない。もしそうなると、
map :: (Str -> Str) -> [Str] -> [Int]
という使われ方をしていても、チェックに通ってしまうことになる
リフレクションやメタプログラミングをしている場合も勿論、コードだけから型推論するのは困難だ
逆に言えば、このようなケースに適切に型注釈をつければ、その他の部分は推論できるようになるので、生産性が格段に上がる
861: 01/17(金)04:10 ID:VwDpqJJw(1) AAS
なんかグダグダ言ってるけどそれ形式論理なしでできるよね
この話の発端は形式論理が役に立たないってことであって,型が役に立たないって話じゃないよ
862: 01/17(金)06:49 ID:b1HMrou3(1) AAS
単純に、お前の話に誰も興味ないから話題が変わっただけでは
863: 01/17(金)09:10 ID:qO2eRSGs(1) AAS
ocamlなんかは型推論の健全性と完全性を備えているから
どんな式でも型がつくし、型エラーがでなければ正しいプログラムになるというのが保証されてる
健全性と完全性をどちらか捨てるとしたら完全性なので、そういう言語は型注釈が必要になる
上下前次1-新書関写板覧索設栞歴
あと 139 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.011s