0
我在这里要做的是首先弄平任何给定的列表,然后将该列表传递给我的加密函数。虽然这不起作用,我不知道为什么。 这里是我到目前为止,(通常lisp)展平和通过名单
(defun flatten (l)
(cond ((null l) l)
((atom l) (list l))
(t (loop for a in l appending (flatten a))))
)
(defun encrypt(enctext)
(flatten enctext)
(if(eq 'A (first enctext)) ;If the first charcater equals 'A'...
(progn ;To allow multiple statements in an if statement
(prinC#\B) ; First statement, print this character
(encrypt(rest enctext)))) ;Second statement, run function again passing the rest of the characters
(if(eq 'B (first enctext))
(progn
(prinC#\C)
(encrypt(rest enctext))))
)
这是如何我调用加密功能
(encrypt '((A)(B))
我应该叫我“加密”功能的“扁平化”的功能?或者在递归调用之后在“扁平化”函数中调用“加密”? 我该如何正确地通过展平名单?
谢谢!我试图将一切都纳入一个功能,但我甚至不知道你是否可以做到这一点。 – Jcan1995
@JoshuaCantero我添加了另一个例子,它不会变扁。 – jkiiski
是的,我注意到,它有很大的帮助。 – Jcan1995