N Best Programming Techniques
From Compsci.ca Wiki
(Difference between revisions)
(→Haskell) |
(→Haskell) |
||
| Line 50: | Line 50: | ||
0 -> 1 | 0 -> 1 | ||
_ -> n * (fact $ n - 1) | _ -> n * (fact $ n - 1) | ||
| + | </pre> | ||
| + | |||
| + | |||
| + | <pre> | ||
| + | fact n | ||
| + | | n == 0 = 1 | ||
| + | | otherwise = n * (fact $ n - 1) | ||
</pre> | </pre> | ||
Revision as of 03:27, 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", []).
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;;