Created
September 16, 2015 03:30
-
-
Save dcguim/e84f8d62b9654692fd11 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(defun proj (n k list) | |
(if (equal n (list-length list)) | |
(nth k list))) | |
(defun zero (n) | |
(* 0 n)) | |
(defun primrec (g h) | |
(labels ((f (&rest args) | |
(if (zerop (cadr args)) | |
(funcall g (car args)) | |
(funcall h (car args) (1- (cadr args)) (f (car args) (1- (cadr args)))))))#'f)) | |
(defun mult (x y) | |
#'(lambda () | |
(primrec #'zero #'(lambda (l) (+ (proj 3 1 l) (proj 3 3 l)))))x y) |
vc pode me dar mais contexto? Não entendi exatamente o que vc está querendo fazer!
Eu quero realizar a operação multiplicação de duas entradas x e y com a função "mult":
(mult 3 4)
No entanto, eu quero definir a função multiplicação por recursão primitiva a partir das funções g e h.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uma vez definida a função sucessor de n ...
A função soma também dá o mesmo problema que a "mult": quando invocada ela simplesmente retorna y,
ao invés de realizar a operação.