diff options
| author | Jan Tuomi <jans.tuomi@gmail.com> | 2022-12-05 14:19:12 +0200 |
|---|---|---|
| committer | Jan Tuomi <jans.tuomi@gmail.com> | 2022-12-05 14:21:53 +0200 |
| commit | 4002b8988c799a904ef1f359d4267ef4ad80cba3 (patch) | |
| tree | dbb67560f3a44c57df4b0e960861f60605ceb45f /examples/types-concept.milch | |
| parent | bba047ae945ae7d7899d6e2c1610923bcedb0442 (diff) | |
Rename project to Milch
Diffstat (limited to 'examples/types-concept.milch')
| -rw-r--r-- | examples/types-concept.milch | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/examples/types-concept.milch b/examples/types-concept.milch new file mode 100644 index 0000000..8359c6b --- /dev/null +++ b/examples/types-concept.milch @@ -0,0 +1,34 @@ +; lowercase types: polymorphic +; everything else: monomorphic + +(type compose (\[ + (\[b] c) ; f + (\[a] b)] ; g + (\[a] c))) +(let! + compose (\[f g] (\[x] (f (g x))))) + +((compose (+ 1) (+ 2)) 3) + +(type id (\[a] a)) +(let! id (\[a] a)) + +(type mod (\[Int Int] Int)) +(let! mod (\[n k] + (- n (* k (/ n k))))) + +(type not (\[Bool] Bool)) +(let! not (\[b] + (match b + true false + false true))) + +(type is-even (\[Int] Bool)) +(let! is-even (\[n] + (match (mod n 2) + 0 true + 1 false))) + +; match cannot be type annotated because its variadic +; but the match above is inferred as this: +(type match (\[a a b a b] b)) |
