From 919b312d68176477650cd6c2533203ac08ab7064 Mon Sep 17 00:00:00 2001 From: Jesse Brault Date: Sun, 1 Dec 2024 08:49:38 -0600 Subject: [PATCH] Add array and monad lib files. --- dm_lib/std/core/array.dm | 9 ++++++++- dm_lib/std/core/monad.dm | 4 ++++ 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 dm_lib/std/core/monad.dm diff --git a/dm_lib/std/core/array.dm b/dm_lib/std/core/array.dm index 5236e08..ce7643f 100644 --- a/dm_lib/std/core/array.dm +++ b/dm_lib/std/core/array.dm @@ -1,5 +1,12 @@ ns std::core -decl pub int Array { +decl pub int Array : Monad { length: Int } + +pub mod array { + // Usage: + // let int_array = array::of(1, 2, 3) + // assert_eq(3, int_array.length) + decl pub fn of(ts: ...T): Array +} diff --git a/dm_lib/std/core/monad.dm b/dm_lib/std/core/monad.dm new file mode 100644 index 0000000..17f62c3 --- /dev/null +++ b/dm_lib/std/core/monad.dm @@ -0,0 +1,4 @@ +pub hkt Monad[T] { + fn map(m: fn (from: A) => B): T + fn flat_map(m: fn (from: A) => T): T +}