Skip to content

Instantly share code, notes, and snippets.

@lalaithion
Created April 7, 2021 21:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lalaithion/cdf5817a6caabb291ab195731e25b9bc to your computer and use it in GitHub Desktop.
Save lalaithion/cdf5817a6caabb291ab195731e25b9bc to your computer and use it in GitHub Desktop.
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