QiでL-99 (P19 指定した位置でローテーションさせる) — #:g1

Posted 2008-04-01 09:06:00 GMT

-(http://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html)
今迄、Qiに1+とか、1-が備え付けで存在すると思っていましたが、なんとQiでは関数名を全部大文字で書くと、下層のCLの関数が直接呼べるんだそうで、1+はCLから呼んでいたのでした。また、DEFUNや、DEFMACROで下層のCLの関数も定義可能とのこと。

(my-rotate [a b c d e f g h] 3)
\=>  [d e f g h a b c]
\

(my-rotate [a b c d e f g h] -2) \=> [g h a b c d e f] \

(define my-rotate [ ] _ -> [ ] Lst N -> (xappend (split Lst (+ N (length Lst)))) where (> 0 N) Lst N -> (xappend (split Lst N)))

(define xappend [H T] -> (append T H))


comments powered by Disqus