「コンパイラ・スクリプトエンジン」相談室16 (649レス)
上下前次1-新
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
632: 2021/06/01(火)15:25 ID:IjgT90G7(2/2) AAS
Prologなら型システムを作るのもお手の物だ。
t(I,int):- integer(I).
t(E1+E2,int):- t(E1,int), t(E2,int).
:- t(1+2+3,T),!,writeln(T).
:- halt.
これだけ。Prologは関数というか述語のネストをできなくして
述語の引数は全てクォートとされた式のように扱われ、
変数がアンクォートな感じに書ける。
故にLispのS式より複雑な優先順位付きの演算子を使った式が扱えて便利だ。
ってことで、暇な奴がいたら使ってみて欲しいんダゼ。
じゃあなw
633: 2021/06/23(水)07:02 ID:HYjDIJ1V(1) AAS
Prolog興味あるけどCとかJavaとかPythonとかのメジャーどころと違って教科書みたいなアカデミックな本しか見つからないから並以下グラマの俺には無理
634: 2021/10/13(水)08:22 ID:Qk99MJFD(1) AAS
岩波のprologのプログラミング作法読んでみたら?
第5世代が成果をオープンソースに出来ていればなあ
635: 2023/07/05(水)03:42 ID:e/cCV0Lv(1) AAS
>>311
人は死後49日は漂うと云われているな
636: 2023/09/24(日)11:28 ID:Iodo3XEj(1) AAS
インタプリタの作り方 −言語設計/開発の基本と2つの方式による実装− - インプレスブックス
外部リンク:book.impress.co.jp
637: 2023/10/06(金)08:06 ID:NmxdZAP9(1) AAS
バックエンドの作り方はググれば解説が出てくるが
“実用的な”バックエンドの作り方はさっぱりわからない
RX用のバックエンドが欲しいんだがなー
638: 2023/11/11(土)06:58 ID:uMtlBPBy(1/2) AAS
double a = 2.71828;
というコードをコンパイルするときに、2進浮動小数点数に変換しないといけないと思います。
2進数浮動小数点数に丸めるときに、四捨五入(0捨1入)したり、一番近い2進浮動小数点数に変換したりといろいろな方法がありますが、その方式を決定するのもコンパイラの仕事ですか?
計算機イプシロンを ε_M とします。
2進浮動小数点数に丸めるときの方式として、四捨五入(0捨1入)が採用されているかどうかを確かめる方法として、
eps = 2^(-52)
1 + (1/2) * eps
を計算させて、それが 1 + eps に等しいかどうかをみるという方法が数値解析の本で紹介されています。
1 + (1/2) * eps
を計算するときに、丸めとかで変な浮動小数点数になって、この紹介されている方法が実行できないとかないですか?
639(1): 2023/11/11(土)07:01 ID:uMtlBPBy(2/2) AAS
あと、
double a = 2.71828 * 3.141592;
というコードがあったとき、
コンパイラは、 2.71828 を丸めた2進浮動小数点数と 3.141592 を丸めた2進浮動小数点数を掛けよという機械語に翻訳するんですか?
それともこんな簡単な計算はコンパイラで予め行って、その結果を a に代入するという機械語を生成するんですか?
640: 2023/11/11(土)08:35 ID:fuGMacjx(1/2) AAS
double a = math.E + path.PI;
641: 2023/11/11(土)08:37 ID:fuGMacjx(2/2) AAS
宿題は宿題スレへ
642: 2023/11/11(土)11:05 ID:5AzCeqvD(1) AAS
はい
あります
はい
場合によります(最適化という追加処理)
643: [age] 05/12(月)14:33 ID:Zw0HuL6G(1) AAS
こういう言語作る系スレが廃れた原因は何だろう
644: 05/12(月)15:01 ID:zCv6/zTu(1) AAS
>>639
そういうコードはコンパイル時に計算されて
実行時には計算結果がそのまま代入されるけど
「コンパイル時に計算」の際の浮動小数点数での計算の扱いには無頓着で良いと思ってるの?
645: 05/12(月)15:24 ID:FL+WAIid(1) AAS
C言語にはfesetenvのような浮動小数点数プロセッサのモード切替関数もあるからな
コンパイル時に計算してしまうことでそれが反映されなくなるのもそれはそれで問題になるケースがある
646: 05/13(火)09:27 ID:C/NhftFY(1) AAS
Rustなら多い日も安心
647: 06/30(月)18:56 ID:YQWckD/5(1) AAS
あれから色々勉強しましたがCoq(Rocq)での証明や Prolog で操作的意味論や型システムを書くのは楽しいです。
11年かぁ。
$ apt install swi-prolog
$ vi e.pl
e(I,I):- integer(I).
e(E1+E2,I):- e(E1,I1), e(E2,I2), I is I1+I2.
:- e(1+2+3+4,I),writeln(I).
:- halt.
$ swipl e.pl
10
と簡単に言語を作れるので便利だし、最近はAIがプログラム書いてくれるし便利になったなぁ。
648: 07/12(土)09:48 ID:tq7D7WVM(1) AAS
書き込み消えた気がする。
649: 09/04(木)08:13 ID:qpvksIhN(1) AAS
もうどこも人がいない・・・
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ
ぬこの手 ぬこTOP 0.015s