úÎù’      experimental Luke Palmer <lrpalmer@gmail.com>IThe type of builders for ranged tables; takes a lower bound and an upper 1 bound, and returns a memo table for that range. -The type of a memo table for functions of a. AGiven a memoizer for a and an isomorphism between a and b, build  a memoizer for b. CMemoize a two argument function (just apply the table directly for  single argument functions). #Memoize a three argument function. +Memoize the second argument of a function. *Memoize the third argument of a function.  FBuild a table which memoizes all lists of less than the given length.  switch p a b( uses the memo table a whenever p gives 3 true and the memo table b whenever p gives false. Memoize an integral type. FMemoize an ordered type with a bits instance. Good for most integral  types. EMemoize an unsigned type with a bits instance. Good for nonnegative ) integral types. Warning: if a negative Integer is given to an   unsignedBits&-ized function, it will loop forever. ABuild a memo table for a range using a flat array. If items are  given outside the range, don' t memoize. ABuild a memo table for a range using a flat array. If items are 1 given outside the range, behavior is undefined. AGiven a list of ranges, (lazily) build a memo table for each one ' and combine them using linear search.          data-memocombinators-0.3Data.MemoCombinators RangeMemoMemowrapmemo2memo3 memoSecond memoThirdboollistchar boundedListeithermaybeunitpairswitchintegralbits unsignedBits arrayRangeunsafeArrayRangechunks integralBitsintegralFromBitsunsignedIntegralunsignedToBitsunsignedFromBits