Optional parameters: Difference between revisions
Content deleted Content added
+ Tcl |
added ocaml |
||
Line 49: | Line 49: | ||
(("zap" "zip" "Zot") ("a" "b" "c") ("" "q" "z"))</lang> |
(("zap" "zip" "Zot") ("a" "b" "c") ("" "q" "z"))</lang> |
||
=={{header|OCaml}}== |
|||
OCaml has optional named parameters. |
|||
<lang ocaml>let sort_table ?(ordering = compare) ?(column = 0) ?(reverse = false) table = |
|||
let cmp x y = ordering (List.nth x column) (List.nth y column) * (if reverse then -1 else 1) in |
|||
List.sort cmp table</lang> |
|||
Example uses: |
|||
<lang ocaml># let data = [["a"; "b"; "c"]; [""; "q"; "z"]; ["zap"; "zip"; "Zot"]];; |
|||
val data : string list list = |
|||
[["a"; "b"; "c"]; [""; "q"; "z"]; ["zap"; "zip"; "Zot"]] |
|||
# sort_table data;; |
|||
- : string list list = |
|||
[[""; "q"; "z"]; ["a"; "b"; "c"]; ["zap"; "zip"; "Zot"]] |
|||
# sort_table ~column:2 data;; |
|||
- : string list list = |
|||
[["zap"; "zip"; "Zot"]; ["a"; "b"; "c"]; [""; "q"; "z"]] |
|||
# sort_table ~column:1 data;; |
|||
- : string list list = |
|||
[["a"; "b"; "c"]; [""; "q"; "z"]; ["zap"; "zip"; "Zot"]] |
|||
# sort_table ~column:1 ~reverse:true data;; |
|||
- : string list list = |
|||
[["zap"; "zip"; "Zot"]; [""; "q"; "z"]; ["a"; "b"; "c"]] |
|||
# sort_table ~ordering:(fun a b -> compare (String.length b) (String.length a)) data;; |
|||
- : string list list = |
|||
[["zap"; "zip"; "Zot"]; ["a"; "b"; "c"]; [""; "q"; "z"]]</lang> |
|||
=={{header|Tcl}}== |
=={{header|Tcl}}== |