2016-03-23 21 views
-1
;; loads a board from the given file 

;; it expects the board to be in the format of a single S-expression: 

;; a list of nine lists, each containing 9 numbers 


    (defun get-board-from-file file 
     (let ((in (open file :if-does-not-exist nil))) 
     (when in (return-from get-board-from-file (read in))) 
     (when (not in) (format t "~%Unable to open file ~A" file)) 
     ) 
    ) 

Bu, sudoku çözücüsü için bir çözümün bir parçasıdır.Bu lisp kodu parçasının raket çevirisi nedir?

+1

Racket'te ne denediniz? Çevirinizde özel bir şey çalışmıyor mu? –

+0

Hiç Bilmiyorum Racket. Daha önce çalışmış olduğum Lisp kodunun küçük çevirileriyle öğrenmeye çalışıyordum. – McFiddlyWiddly

+3

StackOverflow'a Hoş Geldiniz! İlk önce size bir çatlak vermeniz, bize neyle geldiğini göstermeniz, sonra da yaşadığınız belirli engelleri aşmanıza yardımcı olalım. Genel olarak insanlar sadece kodu çevirmez. –

cevap

1

aşağıdakileri deneyin, söz konusu Lisp kod işlevsel eşdeğer, ama Racket yazılmış: Dosya yoksa yukarıdaki kod bir özel durum işleme

(define (get-board-from-file file) 
    (with-handlers ([exn:fail:filesystem? 
        (lambda (exn) (printf "~%Unable to open file ~A" file))]) 
    (call-with-input-file file 
     (lambda (in) (read in))))) 

ve emin olur Dosya okunduktan sonra bağlantı noktası kapatılır.