Skip to content

Instantly share code, notes, and snippets.

@tonymorris
Last active August 29, 2015 13:57
Show Gist options
  • Save tonymorris/9798282 to your computer and use it in GitHub Desktop.
Save tonymorris/9798282 to your computer and use it in GitHub Desktop.
// sequence :: [Maybe a] -> Maybe [a]
args(list)
result = new List;
foreach el in list
if(el == null)
return null;
else
result.add(el);
return result;
// sequence :: [t -> a] -> t -> [a]
args(list, t)
result = new List;
foreach el in list
result.add(el(t));
return result;
// filterM :: (a -> Maybe Bool) -> [a] -> Maybe [a]
args(pred, list)
result = new List;
foreach el in list
ans = pred(el);
if(ans == null)
return null;
else if(ans)
result.add(el);
return result;
// filterM :: (a -> t -> Bool) -> [a] -> t -> [a]
args(pred, list, t)
result = new List;
foreach el in list
if(pred(el, t))
result.add(el);
return result;
// findM :: (a -> Maybe Bool) -> [a] -> Maybe a
args(pred, list)
result = new List;
foreach el in list
ans = pred(el);
if(ans == null)
return null;
else if(ans)
return a;
return null;
// findM :: (a -> t -> Bool) -> [a] -> t -> a
args(pred, list, t)
foreach el in list
ans = pred(el, t);
if(ans)
return true;
return false;
// join :: [[a]] -> [a]
args(list)
result = new List;
foreach el in list
result.append(el);
return result;
// join :: (t -> t -> a) -> t -> a
args(f, t)
return f(t, t);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment