{{ message }}

Instantly share code, notes, and snippets.

# Marty Stumpf thealmarty

Last active Dec 13, 2018
unfold function in OCaml, with a use example.
View unfold.ml
 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)));;
Last active Dec 13, 2018
View example.hs
 --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)
Last active Dec 18, 2018
Iterate function using unfold in OCaml
View iterate.ml
 (* 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),
Last active Jan 15, 2019
The zip8 function, a function that zips 8 lists at once, in Haskell.
View zip8.hs
 -- | 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
Last active Jan 15, 2019
A zip function in Haskell that stops zipping when any of the input lists' first element is zero, or when any of the input list is empty.
View zip_no_zero.hs
 --As modified from the Prelude: zip_no_zero ::(Num a, Eq a, Num b, Eq b)=> [a] -> [b] -> [(a,b)] zip_no_zero [] _bs = [] zip_no_zero _as [] = [] --Add to p: when any of the input lists' first element is zero. zip_no_zero (0:as) _bs = [] zip_no_zero _as (0:bs) = [] zip_no_zero (a:as) (b:bs) = (a,b) : zip_no_zero as bs
Created Jan 1, 2019
A modified zip function in Haskell that output a list with the second input list's element repeated.
View zip_repeat_input2.hs
 --As modified from the Prelude: zip_repeat_input2 ::(Num a, Eq a, Num b, Eq b)=> [a] -> [b] -> [(a,b,b)] zip_repeat_input2 [] _bs = [] zip_repeat_input2 _as [] = [] zip_repeat_input2 (a:as) (b:bs) = (a,b,b) : zip_repeat_input2 as bs main = do print (zip_repeat_input2 [0,1,2] [1,2,3]) print (zip_repeat_input2 [1,2,3,4,0,5,6] [1,2,3,4,5,6,0])
Created Jan 1, 2019
A modified zip function in Haskell that sums up the two elements of the input lists in the second item of the output tuple.
View zip_sum.hs
 --As modified from the Prelude: zip_sum ::(Num a, Eq a)=> [a] -> [a] -> [(a,a)] zip_sum [] _bs = [] zip_sum _as [] = [] zip_sum (a:as) (b:bs) = (a, (a + b) ) : zip_sum as bs main = do print (zip_sum [0,1,2] [1,2,3]) print (zip_sum [1,2,3,4,0,5,6] [1,2,3,4,5,6,0])
Last active Jan 3, 2019
The zip function in OCaml, defined with unfold.
View zip.ml
 (* Define the unfold function.*) let rec unfold p g b1 b2 = if p b1 b2 then [] else (match g b1 b2 with (a, (b1prime, b2prime)) -> a :: unfold p g b1prime b2prime) ;; (* Define the zip function.*) let zip = unfold (* Define p.*)
Created Jan 1, 2019
A zip function in OCaml that stops zipping when any of the input lists' first element is zero, or when any of the input list is empty.
View zip_no_zero.ml
 (* Define the unfold function.*) let rec unfold p g b1 b2 = if p b1 b2 then [] else (match g b1 b2 with (a, (b1prime, b2prime)) -> a :: unfold p g b1prime b2prime) ;; (* Define the zip_no_zero function.*) let zip_no_zero = unfold (* Define p.*)
Created Jan 1, 2019
A modified zip function in OCaml that output a list with the second input list's element repeated.
View zip_repeat_input2.ml
 (* Define the unfold function.*) let rec unfold p g b1 b2 = if p b1 b2 then [] else (match g b1 b2 with (a, (b1prime, b2prime)) -> a :: unfold p g b1prime b2prime) ;; (* Define the zip_repeat_input2 function.*) let zip_repeat_input2 = unfold (* Define p.*)