Facebook
From Corrupt Matamata, 6 Years ago, written in OCaml (Objective Caml).
This paste is a reply to Re: Untitled from Queen Camel - view diff
Embed
Download Paste or View Raw
Hits: 410
  1. let rec fib  = function n ->
  2.         if ( n < 0) then raise (Failure "Gunwo")
  3.         else if n = 0 then 0
  4.         else if n = 1 then 1
  5.         else fib (n - 1) + fib (n - 2);;
  6.  
  7.  
  8. let fib2 = fun n ->
  9.         let rec fib_tr = fun (n, fib1, fib2) ->
  10.                 if (n < 0) then raise(Failure "Gunwo")  
  11.     else if (n = 0) then fib1
  12.     else if (n = 1) then fib2
  13.     else fib_tr(n - 1,  fib2, fib1 + fib2)
  14.         in fib_tr(n,0,1);;
  15.  
  16.  
  17.  
  18. let x1 = (-2, -1, 0, 1, 2);;
  19. let (_, _, x, _, _) = x1;;
  20.  
  21. let x2 = ((1, 2), (0, 1));;
  22. let ((_, _), (x, _)) = x2;;
  23.  
  24.  
  25.  
  26. let rec initSegment = fun (xs1,xs2) ->
  27.         if (xs1 = []) then true
  28.         else if (xs2 = []) then false
  29.         else if (List.hd xs1 = List.hd xs2) then initSegment(List.tl xs1,List.tl xs2)
  30.         else false;;
  31.  
  32.  
  33. let l1 = 1 :: 2 :: [];;
  34. let l2 = 1 :: [];;
  35. initSegment(l2, l1);;
  36.  
  37. let rec replaceNth = fun (xs, n, el) ->
  38.         if (n < 0 || xs = []) then raise (Failure "Dupa")
  39.   else if (n = 0) then el :: List.tl xs
  40.   else List.hd xs :: replaceNth(List.tl xs,n-1,el);;
  41.  
  42. replaceNth('a' :: 'b' :: 'c' ::[], 5, 'd')
  43.