2013-01-08 32 views
2

存在一個稱爲meep的電磁模擬器,它以guile解釋器的形式提供作爲前端。模擬器由一堆方案宏組成。這個方案錯誤告訴我什麼?

我想弄清楚下面的錯誤是什麼意思。代碼取自教程。當我在一個過程中包裝教程時,我得到一個運行時錯誤,我不確定解釋器(guile)告訴我什麼。

不工作的代碼

(define diffthick 
    (lambda (n) ; n doesn nothing 
    (
    (set! geometry-lattice (make lattice (size 16 8 no-size))) 
    (set! geometry (list 
         (make block (center 0 0) (size infinity 1 infinity) 
          (material (make dielectric (epsilon 12)))))) 
    (set! sources (list 
        (make source 
          (src (make continuous-src (frequency 0.15))) 
          (component Ez) 
          (center -7 0)))) 
    (set! pml-layers (list (make pml (thickness 1.0)))) 
    (set! resolution 10) 
    (run-until 200 
       (at-beginning output-epsilon) 
       (at-end output-efield-z)) 
    ) 
    ) 
) 
(diffthick 3) 

工作碼(沒有程序)

(set! geometry-lattice (make lattice (size 16 8 no-size))) 
(set! geometry (list 
       (make block (center 0 0) (size infinity 1 infinity) 
         (material (make dielectric (epsilon 12)))))) 
(set! sources (list 
       (make source 
       (src (make continuous-src (frequency 0.15))) 
       (component Ez) 
       (center -7 0)))) 

(set! pml-layers (list (make pml (thickness 1.0)))) 
(set! resolution 10) 
(run-until 200 
      (at-beginning output-epsilon) 
      (at-end output-efield-z)) 

錯誤

creating output file "./eps-000000.00.h5"... 
creating output file "./ez-000200.00.h5"... 
run 0 finished at t = 200.0 (4000 timesteps) 

Backtrace: 
In standard input: 
    21: 0* [diffthick 3] 
    3: 1 [#<unspecified> #<unspecified> #<unspecified> ...] 

standard input:3:5: In expression ((set! geometry-lattice #) (set! geometry #) (set! sources #) ...): 
standard input:3:5: Wrong type to apply: #<unspecified> 
ABORT: (misc-error) 

工作

----------- 
creating output file "./eps-000000.00.h5"... 
creating output file "./ez-000200.00.h5"... 
run 0 finished at t = 200.0 (4000 timesteps) 

在這一天我覺得自己喜歡的事月底被兩次評估。但我不確定那是什麼。

回答

5

錯誤表示代碼試圖將(set! geometry-lattice #)的結果應用爲好像它是函數,但set!結果代替#<unspecified>。發生這種情況是因爲set!系列包裝在包裝中。

你可能尋找

(begin 
    (set! geometry-lattice ...) 
    ... 
    (run-until ...)) 

或者剛剛擺脫額外的對括號中的,因爲拉姆達機構都隱含包裹在begin

+0

謝謝!隱含的括號給了我,我最終使用了run-until表單。 – Mikhail

+0

遇到類似的錯誤。謝謝hzap –

相關問題