Skip to content

Instantly share code, notes, and snippets.

@lalaithion
Created April 7, 2021 21:17
Embed
What would you like to do?
type sizetwice [n] = {
array: [n][n]i64
}
let make_sizetwice (n: i64): sizetwice [n] = {array = replicate n (iota n)}
let consume_sizetwice [n] (x: sizetwice [n]): i64 = reduce (+) 0 (map (reduce (+) 0) x.array)
-- > consume_sizetwice (make_sizetwice 3i64)
type~ meta_sizetwice [m] = {
array: [m](sizetwice [])
}
let make_meta (m: i64) (n: i64): meta_sizetwice [m] = {array = replicate m (make_sizetwice n)}
let complicated_meta: meta_sizetwice [] = {array = [make_sizetwice 2, make_sizetwice 2]}
let consume_meta (x: meta_sizetwice []): i64 = reduce (*) 1 (map consume_sizetwice x.array)
-- > consume_meta (make_meta 3i64 2i64)
-- > consume_meta (complicated_meta)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment