4

C でスキーム プログラムを実行する方法はありますか? 私は両方の言語を知っており、C の速度でスキームのロジックを使用したいと考えていました。C の基本的な例では、スキームが使用する必要があるリストを作成し、スキームが何かを返します。これまでのところ、スキームには DrRacket を使用してきました。誰かが私を正しい方向に向けることができますか?

編集:

Caleb の回答を見て、Racket CGC を見ました。これをどのように見つけますか?私はそのウェブサイトからラケットのソースを持っています.私はUbuntuを使用しています. また、libracket.a および libmzgc.a ライブラリはどこで入手できますか。どこにも見つかりません。どこを見ても、あなたがそれらを必要としているという記事に戻っているだけです。

4

3 に答える 3

4

現在のほとんどのスキームには、スキーム以外のコードを操作できるようにする何らかの外部関数インターフェイスがあります。ここには私よりもラケットの経験が豊富な人がたくさんいるので、それについては彼らに話させてください。

Chickenは、 へのコンパイラが含まれているという点で、スキームの中でかなりユニークCです。Cそのため、chicken を使用すると、これらを使用してコードをスキーム プログラムに直接埋め込むことができ、外部変数および関数とのインターフェイス#> ... <#のための手順がいくつかあります。

詳細については、マニュアルの「はじめに」セクションを参照してください。

于 2012-05-09T21:31:23.887 に答える
4

Scheme と C を混在させる最も簡単な方法は、主なプログラムを Scheme で書き、C で絶対に必要なものだけを C で書くことです。

C ソースはライブラリとしてコンパイルされ、FFI を使用して Racket にインポートされます。FFI は驚くほど簡単に使用できます。逆にプログラムを作成することにした場合でも、FFI を最初に検討する必要があります。

FFIの紹介

FFIに関するドキュメント

ところで、libracket.a と libmzgc.a は、残りの Racket ファイルと一緒にインストールする必要があります。私はUbuntuを使用していないため、正確なパスはわかりません。ただし、unix コマンドfindを使用して見つけることができます。

私の記憶が正しければ、コマンドは次のとおりです。

find / -name libracket.a
于 2012-05-09T20:48:32.853 に答える
4

Racket C API ドキュメント、特にEmbedding Racket into a Programというタイトルのセクションを見ましたか? そこでは、Unix、Windows、および MacOS X の手順が提供されています。

于 2012-05-09T17:29:55.227 に答える