home *** CD-ROM | disk | FTP | other *** search
Text File | 1994-09-27 | 4.1 KB | 115 lines | [TEXT/ttxt] |
- These libraries are adapted from the lml library. Also included are a number
- of Common Lisp functions.
-
- The hbc library contains the following modules and functions:
-
- * module Either
- ** Now part of Prelude **
-
- * module Option
- type for success or failure
- data Option a = None | Some a
- thenO :: Option a -> (a -> Option b) -> Option b apply a function that may fail
-
-
- * module ListUtil
- Various useful functions involving lists that are missing from the Prelude
- assoc :: (Eq c) => (a -> b) -> b -> [(c, a)] -> c -> b
- assoc f d l k looks for k in the association list l, if it is found f is applied to the value, otherwise d is returned
- concatMap :: (a -> [b]) -> [a] -> [b]
- flattening map (LMLs concmap)
- unfoldr :: (a -> (b, a)) -> (a -> Bool) -> a -> [b]
- unfoldr f p x repeatedly applies f to x until (p x) holds. (f x) should give a list element and a new x
- mapAccuml :: (a -> b -> (a, c)) -> a -> [b] -> (a, [c])
- mapAccuml f s l maps f over l, but also threads the state s though (LMLs mapstate)
- union :: (Eq a) => [a] -> [a] -> [a]
- unions of two lists
- intersection :: (Eq a) => [a] -> [a] -> [a]
- intersection of two lists
- chopList :: ([a] -> (b, [a])) -> [a] -> [b]
- LMLs choplist
- assocDef :: (Eq a) => [(a, b)] -> b -> a -> b
- LMLs assocdef
- lookup :: (Eq a) => [(a, b)] -> a -> Option b
- lookup l k looks for the key k in the association list l and returns an optional value
-
- * module Pretty
- John Hughes pretty printing library.
- type Context = (Bool, Int, Int, Int)
- type IText = Context -> [String]
- text :: String -> IText just text
- (~.) :: IText -> IText -> IText horizontal composition
- (^.) :: IText -> IText -> IText vertical composition
- separate :: [IText] -> IText separate by spaces
- nest :: Int -> IText -> IText indent
- pretty :: Int -> Int -> IText -> String format it
-
- * module QSort
- Sort function using quicksort.
- sortLe :: (a -> a -> Bool) -> [a] -> [a] sort le l sorts l with le as less than predicate
- sort :: (Ord a) => [a] -> [a] sort l sorts l using the Ord class
-
- * module Random
- Random numbers.
- randomInts :: Int -> Int -> [Int] given two seeds gives a list of random Int
- randomDoubles :: Int -> Int -> [Double] given two seeds gives a list of random Double
-
- * module RunDialogue
- Test run programs of type Dialogue.
- Only a few Requests are implemented, unfortunately not ReadChannel.
- run :: Dialogue -> String just run the program, showing the output
- runTrace :: Dialogue -> String run the program, showing each Request and Response
-
- * module Miranda
- Functions found in the Miranda(tm) library.
-
- * module Printf
- C printf style formatting. Handles same types as printf in C, but requires the arguments
- to be tagged. Useful for formatting of floating point values.
- data UPrintf = UChar Char | UString String | UInt Int | UInteger Integer | UFloat Float | UDouble Double
- printf :: String -> [UPrintf] -> String convert arguments in the list according to the formatting string
-
-
- * module Time
- Manipulate time values (a Double with seconds since 1970).
- -- year mon day hour min sec dec-sec weekday
- data Time = Time Int Int Int Int Int Int Double Int
- dblToTime :: Double -> Time convert a Double to a Time
- timeToDbl :: Time -> Double convert a Time to a Double
- timeToString :: Time -> String convert a Time to a readable String
-
-
- * module Native
- Conversion between native machine representations and byte streams,
- and binary I/O operations.
-
- Similar (but not identical to) the hbc extension of the same name.
- The main difference is that Bytes are not Chars and cannot be written
- to ordinary files. You must use the primitives defined in this module
- to manipulate ByteFiles instead. Plus, it's more efficient to read
- and write objects directly to ByteFiles than to convert to Bytes first.
-
- See Native.hs for the exported functions. Also, NativeTest.hs has
- some examples.
-
- NOTE: This module currently only works in CMUCL-based Haskell.
-
-
-
-
- ----- To add:
-
- Bytes
- IO Library
- Word oprtations
- Time clock stuff
- Lisp stuff: symbols
- hashtables
- strings
-
-
-
-
-
-
-