Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- p6.
- let rec maxim list = if List.tl list = [] then List.hd list
- else let m1 = maxim ([List.hd list]) and m2 = maxim (List.tl list) in
- if m1>m2 then m1
- else m2
- ;1.
- let rec fibo = function n -> if n<2 then 1 else fibo(n-1) + fibo(n-2)
- ;2.
- let rec ack x y = if (x>0 && y>0) then (ack(x-1) (ack x (y-1))) else if (x>0 && y=0) then (ack (x-1) 1) else (y+1)
- ;3.
- let rec geninterval a b =
- if a > b then []
- else a :: geninterval (a+1) b
- let rec geninterval (x,y) = if x=y then [x]
- else let a = [x] in a @ (geninterval ((x+1),y))
- ;4.
- let my_not a = if(a = true) then false else true
- let my_and a b = if (a = true) then if (b = true) then true else false else false
- let my_or a b = if (a = true) then true else if (b = true) then true else false
- ;5.
- let rec digits nr = if (nr <= 9) then [nr] else (digits (nr / 10)) @ [(nr mod 10)]
- //let digits nr = List.rev (make-list nr)
- //let digits nr = while (nr > 0) do (nr mod 10) :: [] done;;
- 6.
- ;7.
- let rec cmmdc a b =
- let rest = a mod b in
- if (rest = 0) then b else cmmdc b rest
- --------------------------------------------------------------------------------------------------------------------------
- ;p1.
- (defmacro define ((function_name &rest param) body) `(defun ,function_name ,(mapcar 'prin1 param) ,body))
- (define (sum x y)
- (+ x y))
- (print (sum 2 2))
- ;p2.
- (defmacro dotimes1 ((var count &optional (res nil)) &rest body) `(do ((,var '0 (+ '1 ,var))) ((= ,var (- ,(eval count) '1)) ,res) ,(car body)))
- (setq result '())
- (dotimes1 (x (+ 1 5)) (setq result (append result (list x))))
- (print result)
- ;OR
- (defmacro do-times ((var count result) body)
- `(do ((,var 0 (+ 1 ,var)))
- ((= ,var (- ,count 1)) ,result)
- ,body)
- )
- (print (do-times (n 10 'Finished!) (print (+ n n))))
- ;p3.
- (defun rev (l) (nreverse l))
- (setq l '(a b c d))
- (rev l)
- (print l)
- (print (eql l (rev l)))
- ;OR
- (defun rev2 (list)
- (setq aux (reverse list))
- (rplaca list (car aux))
- (rplacd list (cdr aux))
- )
- (print (rev2 l))
- (print (eql l (rev2 l)))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement