2016-10-16 1 views
1

私はlispに新しく、私の教授はいくつかの.lispファイルを与えて遊んでいました。1つのlispファイルの関数を使って別のlispファイルの中の何かを解決するにはどうすればよいですか?

http://pastebin.com/eDPUmTa1(検索機能)

http://pastebin.com/xuxgeeaM(waterjug.lispとして保存された水差し問題)

問題は、私は別の問題を解決するために、1つのファイルから実行されている機能を実装する方法がわからないです。私がやったことのほとんどは、1つのファイルからコンパイルされた関数であり、端末でそれを使って遊んでいます。私はこのIDEで2つのファイルを読み込む方法と関数をどのように実行すべきかについてはわかりません。私は、例えば、幅優先探索機能を使って問題を解決してみようとしています。

私は現在、quicklispとスライムと一緒に共通のlisp実装としてテキストエディタSBCLとしてemacsを使用しています。

+1

https://github.com/n-critser/GetALisp/tree/master/whIa/sector0100 –

答えて

2

それぞれのファイルがそれぞれf1.lispf2.lispという独自のバッファ内にあると仮定すると、各バッファに入っているときはslime-compile-and-load-fileに電話する必要があります。これは、デフォルトでC-c C-kにバインドされています。最初のファイルは、2番目のファイルの定義が含まれているため、最初にコンパイルする必要があります。

ただし、2番目のファイル(f2.lisp)には2つの問題があります:(break(breadを検索し、それらの文字列を削除します。かっこの周りの書式が括弧のバランスが良いかどうかを確認してください。

ファイルのコンパイル時に警告メッセージやエラーに注意してください。あなたは、バッファから直接何かを評価する場合 はその後、あなたは評価したいフォームの後にカーソル(ポイント)を入れ、種類てCx Ceは(カーソルが下記%で表される想像):

(dump-5 (start-state *water-jug*))% 

のような場合は、JUG-STATEクラスのインスタンスを表すミニバッファに結果が出力されます。関数が何かを標準出力に書き込む場合は、ウィンドウをREPLバッファにオープンしたままにしておきます(これは、下記の(describe ...)の場合に当てはまります)。

C-c Iの場合は、点の前に既に書類で満たされている検査する式が尋ねられます。あなたはをEnterキーを押すと、検査官バッファが表示されます:

#<JUG-STATE {1004BD8F53}> 
-------------------- 
Class: #<STANDARD-CLASS COMMON-LISP-USER::JUG-STATE> 
-------------------- 
Group slots by inheritance [ ] 
Sort slots alphabetically [X] 

All Slots: 
[ ] FIVE = 0 
[ ] TWO = 2 

[set value] [make unbound] 

読むhttp://www.cliki.net/slime-howto

+0

ポインタと詳細な説明をありがとう。両方のファイルは私の教授によって書かれています。私はそれが「パン」の代わりに「中断」であると想定されていたと思っていましたが、あなたはそこにいなくてもいいと言っていますか?また、問題自体を解決するための簡単な質問。私は、breadth-search-first関数を使って問題を解決することはできませんか?私はそれを解決するbfs関数を含む新しい関数(例えばsolveWaterJug)を書かなければならないだろうか? – trungnt

+0

@truungnt教授にとっても間違いが起こります。コンパイルエラーがあり、視覚的にこれが奇妙なので、そこにはいけないと思う。あなたの教授が、デバッグに使用されるbreak文を削除するのを忘れたと思います。その問題自体については、教授が書いた補助関数に基づいてソルバー関数(camelCaseを使わず、 'solve-water-jug'と書く)を提供する必要があります。まず、それらを読んで、彼らが何をしているかを理解してください。徹底的にテストします。 – coredump

関連する問題