- C++14/C++1z 20
769 :デフォルトの名無しさん[sage]:2015/11/24(火) 13:55:40.92 ID:ge2Zja90 - どちらかというとテンプレートなんて作らずにマクロを強化して欲しかった・・・・・・
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
975 : ◆tAo.kQ2STk [sage]:2015/11/24(火) 14:36:47.03 ID:ge2Zja90 - >>964
あぁそうだね、300個の還元/還元衝突だね。 あれは文法を変換したりすれば消すことが出来るよ。 というかCやJavaの仕様書に載ってる文法が(LALR解析表を作る上では)クズすぎるのが原因だから、 同じ文を受理する曖昧性のない文法を導出すれば済む話。 あるいはGLR法を試してみたら?再帰を一切使わず実装できるよ? >>972 continuationとループを使って実装すれば良いんじゃないかい? >>973 任意の再帰は、不動点コンビネータが使えるならば、再帰を持たない関数だけで表現できる。 不動点コンビネータは、S関数とK関数、I関数により表現できる。例えばY=S(K(SII))(S(S(KS)K)(K(SII))) (by Wikipedia) S関数とK関数とI関数はそれぞれチューリングマシン上でエミュレート出来る。 なのでチューリングマシン自体に再帰の機能が無くても、再帰は使える。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
977 : ◆tAo.kQ2STk [sage]:2015/11/24(火) 16:26:08.92 ID:ge2Zja90 - >>976
でも正確に「言語が提供する再帰機能」を使わずに実装できるよ!やったね! ジョークだけどなw
|
- C++14/C++1z 20
771 :デフォルトの名無しさん[sage]:2015/11/24(火) 16:36:45.34 ID:ge2Zja90 - Cプログラマは非力で使いにくく不自由なマクロしか知らないからね。
その非力なマクロでさえ使い所を弁えれば役に立つのだけど。 Common LispやScheme(version 6以降)なんかの強力なマクロがCにあればなぁと思ってる。 c++のテンプレート以上に強力で、使いやすく、そして自由な奴。
|
- なあ、再帰関数好きな人いる? パート2 [転載禁止]©2ch.net
979 : ◆tAo.kQ2STk [sage]:2015/11/24(火) 16:59:59.73 ID:ge2Zja90 - >>978
まぁループはループで、無限ループ+メモリ確保しまくりのコンボをキメられたら どの辺が安全なのか分からなくなるけどなww ガリガリガリガリ現在スワップ使用量20GiBガリガリ 結局の所言語や問題に適した方法を取るのが一番だよな。 手で書くならパースは再帰で、但しASTのevaluationはループ+継続で。 # そういや昔、某和製コンパイラの「ループが時々うまく動かないバグ」に引っかかって # 仕方なくそこだけ末尾再帰で書き直した事があったなぁ # (3バイトの前方ジャンプ命令と5バイトのそれのどちらをバイナリに埋め込むべきかという判定のミスで丁度いい長さのループが誤動作する問題)
|