Skip to content

Instantly share code, notes, and snippets.

View thealmarty's full-sized avatar

Marty Stumpf thealmarty

View GitHub Profile
@thealmarty
thealmarty / zip8.hs
Last active January 15, 2019 19:16
The zip8 function, a function that zips 8 lists at once, in Haskell.
-- | The 'zipWith8' function takes a function which combines eight
-- elements, as well as eight lists and returns a list of their point-wise
-- combination, analogous to 'zipWith'.
zipWith8 :: (a->b->c->d->e->f->g->h->i) ->
[a]->[b]->[c]->[d]->[e]->[f]->[g]->[h]->[i]
zipWith8 z (a:as) (b:bs) (c:cs) (d:ds) (e:es) (f:fs) (g:gs) (h:hs)
= z a b c d e f g h : zipWith8 z as bs cs ds es fs gs hs
zipWith8 _ _ _ _ _ _ _ _ _ = []
-- | The 'zip8' function takes eight lists and returns a list of
@thealmarty
thealmarty / iterate.ml
Last active December 18, 2018 20:08
Iterate function using unfold in OCaml
(* The unfold function takes in
a predicate (p) and
a function (g) which takes an input (b). *)
let rec unfold p g b =
if p b then [] else
(match g b with (a, bprime) ->
a :: unfold p g bprime)
;;
(* The iterate function takes in a function (f),
@thealmarty
thealmarty / example.hs
Last active December 13, 2018 17:48
Anamorphisms example in Haskell
--Import Data.List so that we can use the unfoldr function.
import Data.List
--p and g are combined into one function which you input to unfoldr in Haskell:
example = unfoldr (\x -> if x > 9 then Nothing else Just (x, x+1))
--Print out results of (example 7) and (example 0).
main = do
print (example 7)
print (example 0)
@thealmarty
thealmarty / unfold.ml
Last active December 13, 2018 17:54
unfold function in OCaml, with a use example.
let rec unfold p g b =
if p b then [] else
(match g b with (a, bprime) ->
a :: unfold p g bprime)
;;
(*Implement the example: *)
let example = unfold (fun x -> (x > 9)) (fun x -> (x, (x + 1)));;