N Best Programming Techniques
From Compsci.ca Wiki
(Difference between revisions)
(→Haskell) |
(→Haskell) |
||
Line 56: | Line 56: | ||
<pre> | <pre> | ||
fact n = case n of | fact n = case n of | ||
- | + | 0 -> 1 | |
- | + | _ -> n * (fact $ n - 1) | |
</pre> | </pre> | ||
Revision as of 03:42, 11 February 2007
Ten best programming techniques you're (probably) not using.
Contents |
Pattern matching
Common Lisp (destructuring-bind)
[1]> (defun foo (a-list) (destructuring-bind (a &rest b) a-list (list a b))) FOO [2]> (foo '(1 2 3 4)) (1 (2 3 4)) [3]>
Erlang
-module(example). -export(hello/1]). hello("wtd") -> io:format("Hello, ~s!~n", [Name]); hello(Name) -> io:format("Get out!!~n", []).
Scala
def fact(n : int) : int = n match { case 0 => 1 case _ => n * fact(n - 1) }
Haskell
fact 0 = 1 fact n = n * (fact $ n - 1)
fact n = case n of 0 -> 1 _ -> n * (fact $ n - 1)
fact n | n == 0 = 1 | otherwise = n * (fact $ n - 1)
O'Caml
# let rec fact n = match n with 1 -> 1 | o -> o * fact (o - 1);;
# let rec fact = function 1 -> 1 | o -> o * fact (o - 1);;
# let fact n = let rec fact' n acc = match n with 1 -> acc | o -> fact (o - 1) (n * acc) in fact' n 1;;