Skip to content

Instantly share code, notes, and snippets.

@IronGremlin
IronGremlin / scary_poles.js
Created June 23, 2016 23:10
JS boolean polish notation converter
"use strict";
const AND = 'AND',
OR = 'OR';
function parsePoleBools(arr){
/*
takes:
an array of:
bools and/or functions that evaluate to bools
tokens representing boolean comparison
(all in reverse polish notation order)
@IronGremlin
IronGremlin / combinatronicizer.js
Created July 20, 2016 00:55
combinations with least waste
"use strict";
const _L = require('lodash');
function combinationOfSetsWithLeastWaste(targetSet,candidateGroup){
/*
Finds the group of sets whose intersection equals the target set, while
containing the least waste through extraneous or overlapping items.
where candidateGroup is a collection of objects as:
@IronGremlin
IronGremlin / functionalReact.js
Last active September 9, 2016 00:37
functional React
"use strict";
function ReactFunctor(tag,attr,props,children){
let classArgs = {
render : function render() {
return React.createElement(tag,this.props,this.props.children);
}
};
if (props !== null) Object.assign(classArgs,props);
return React.createElement(React.createClass(classArgs),attr,children);
@IronGremlin
IronGremlin / SOA_Test_Sucks.js
Last active September 22, 2016 20:37
SOATest Functional JS filter statements
var Application = Packages.com.parasoft.api.Application;
var WebBrowserUtil = Packages.webking.api.browser2.WebBrowserUtil;
//set Target Frame
var frameName = 'popupFrame';
//set type of target Element
var targetElementType = 'button';
function getFrameDocument(input, context) {
//This function lets us get a fake document object to work with.
var document = input.getDocument('',frameName);
goApp :: App n -> IO n
goApp init = evalStateT (runApp init) initAppState
scheduleGTKStuff :: IO () -> IO ()
scheduleGTKStuff action = do
void $ Gdk.threadsAddIdle GLib.PRIORITY_DEFAULT $ do
action
return False
/help
--programA/
----docs/
------docmarkup.doc
------docchoices.choice
-------/choiceA
-------/choiceB
where docmarkup is the text for this step
.choice is just a line delimited list of the following:
@IronGremlin
IronGremlin / conduitMMapParser.hs
Created June 16, 2017 17:25
conduitMMapParser
passesPredicate :: (POExpinDoc -> Bool) -> (Either ParseError POExpinDoc -> Bool)
passesPredicate p = either (\_ -> True) (p)
both :: (a->c) -> (b->c) -> Either a b -> Either c c
both fl fr inp =
case inp of
Left l -> Left (fl $! l)
Right r -> Right (fr $! r)
@IronGremlin
IronGremlin / splits.hs
Created July 19, 2017 22:30
splitTwos
flipT :: (x,y) -> (y,x)
flipT (x,y) = (y,x)
splitOnes :: (Eq a, Ord a) => [a] -> [([a],[a])]
splitOnes xs = map flipT . M.toList . M.fromList . map flipT . map (\n -> partition (==n) xs) $ xs
splitTwos :: (Eq a, Ord a) => [a] -> [([a],[a])]
splitTwos xs = map flipT . M.toList . M.fromList . concatMap splitAgain . splitOnes $ xs
where
splitAgain (n,xs) =
@IronGremlin
IronGremlin / fizzBuzz.hs
Created August 2, 2017 17:17
Fizzbuzz as roestta
fizzBuzzing :: [Int] -> IO () -- Function name and type signature. Says : Take an array of Int and return an IO action of (). () is pronounced 'unit', similar to Java's void.
fizzBuzzing a = -- function named fizzBuzzing with argument a is defined as...
case a of -- given a value a of
[] -> return () -- a blank list, do nothing. 'return' casts the value () as an IO (), which is necessary to type-check.
(x:xs) -> do -- for a list of the form x : xs, where x is the first item and xs is the rest of the list 'do..'
decide x -- do notation allows us to put multiple statements in a row, where the last one is the final result statement of the function. This requires the return type to implement an instance of the Monad typeclass - a more complicated subject.
fizzBuzzing xs -- t
@IronGremlin
IronGremlin / statetExample.hs
Last active September 6, 2017 16:56
sample StateT
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Example () where
import Control.Monad
import Control.Monad.IO.Class
import Control.Monad.State.Strict
type MyAppState = Int -- Your state implementation here.