2012-05-09 65 views
2

有沒有辦法讓C運行方案程序?我知道這兩種語言,並希望能夠以C的速度使用方案的邏輯。一個基本的例子C製作了方案需要使用的列表,然後方案返回一些東西。到目前爲止,我一直在使用DrRacket進行方案。任何人都可以將我指向正確的方向嗎?Scheme和C一起工作

編輯:

看着Caleb的回答,我看到了Racket CGC。你如何找到這個我有它的網站的球拍來源,我在Ubuntu上。我在哪裏可以得到libracket.a和libmzgc.a庫。我無法在任何地方找到它們。我看到的每一處都只是指向那篇文章,說你需要它們。

+1

[GNU Guile](http://www.gnu.org/software/guile/)是另一種可嵌入的方案... – Christoph

+0

你看過雞肉計劃嗎? http://www.call-cc.org – oobivat

+1

如果在您的情況下可能,如果您將Scheme放在控件中並在必要時將其調用到C庫中,則會更容易。見soegaard的答案。 –

回答

4

混合方案C是在計劃寫的主程序,只寫什麼絕對需要在C中C.

的最簡單方法C源代碼被編譯爲一個庫,並使用FFI導入到Racket中。 FFI非常容易使用,即使您決定以其他方式編寫程序,絕對是您首先應該檢查的內容。

Introduction to the FFI

Docs on the FFI

順便說一句 - libracket.a和libmzgc.a應與球拍的其他文件一起安裝。我不在Ubuntu上,所以我不知道確切的路徑。但是,您可以使用unix命令find來查找它。

如果我沒有記錯,該命令是:

find/-name libracket.a 
2

目前大多數方案都有某種外部函數接口,讓您與非計劃代碼工作。 Lot的人在這裏擁有比我更多的經驗,所以我會讓他們告訴你。

Chicken在方案中是相當獨特的,因爲它包含一個編譯器到C。因此,雞允許您直接將C代碼嵌入到具有這些#> ... <#的計劃程序中,並且具有interfacing with external variables and functions的多個程序。

有關更多信息,請參閱手冊的'Getting Started'部分。