sileのブログスマートフォン用の表示で見るsileのブログこの広告は、90日以上更新していないブログに表示しています。lispCommonLispのfletとlabels的なものを(あらかじめ使えるものはlambdaしかない状況で)自分で実装する必要が出てきたので、その際のメモ。以下では煩雑になるためfuncall呼び出しの記述を省略している(実際にはScheme処理系で動作確認を行っていた)。letflet、labelsの前にまずはlambdaを使ったletの実現方法を考える。30)flet上のようにしてletが使えると仮定した場合、fletと同じ機能を実現するのは簡単。WORLD)labelsこれがlabels(ローカル関数の再帰呼び出しが可能)になると少し難しくなる。以下、fletと同様の方法で試した場合。再帰呼び出し部分でfib関数が見つからないと云われるfib変数に束縛したlambdaの本体のコンテキストからは、fib変数が見つからないため、エラーとなる。再帰呼び出しに使用するfib関数を明示的に引数を渡すようにすれば、問題は解決する。55ただ、上の方法の引数の形が変わってしまうのが難点。若干複雑にはなるが、以下のようにクロージャを使って再帰関数を持ち回すようにすれば、引数及び本体の形はほぼ変わらないので、マクロなどで生成するのは楽になる(ように思う)。55これでローカル関数の再帰呼び出しはできるようになったのでは、マクロを使ってシンタックスを整えれば、labelsが実現できることになる。recが分かれているか、とか少し疑問に思ったことがあったように思うけど、少し理由が分かった気がする。読者になる検索リンクgithub最新記事RustでMD5ハッシュを計算するRustとSBCLでのDAWG構築性能の比較メモEmacsのファイル保存時に自動的にrustfmtが適用されるようにする現在時刻をUNIXタイムスタンプ形式で取得するloglevelとseverityの使い分けメモ月別アーカイブ最新記事RustでMD5ハッシュを計算するRustとSBCLでのDAWG構築性能の比較メモEmacsのファイル保存時に自動的にrustfmtが適用されるようにする現在時刻をUNIXタイムスタンプ形式で取得するloglevelとseverityの使い分けメモ注目記事ブクログqiitasileのtips人気エントリーはてなブログをはじめよう!sileさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。