2-- Module : Streamly.Strict
3-- Copyright : (c) 2019 Composewell Technologies
4-- (c) 2013 Gabriel Gonzalez
6-- Maintainer : harendra.kumar@gmail.com
7-- Stability : experimental
10-- | Strict data types to be used as accumulator for strict left folds and
11-- scans. For more comprehensive strict data types see
12-- https://hackage.haskell.org/package/strict-base-types . The names have been
13-- suffixed by a prime so that programmers can easily distinguish the strict
14-- versions from the lazy ones.
16-- One major advantage of strict data structures as accumulators in folds and
17-- scans is that it helps the compiler optimize the code much better by
18-- unboxing. In a big tight loop the difference could be huge.
30-------------------------------------------------------------------------------
32-------------------------------------------------------------------------------
34data Tuple' a b = Tuple' !a !b
35data Tuple3' a b c = Tuple3' !a !b !c
37-------------------------------------------------------------------------------
39-------------------------------------------------------------------------------
42data Maybe' a = Just' !a | Nothing'
44-- XXX perhaps we can use a type class having fromStrict/toStrict operations.
46-- | Convert strict Maybe' to lazy Maybe
47{-# INLINABLE fromStrictMaybe #-}
48fromStrictMaybe :: Monad m => Maybe' a -> m (Maybe a)
49fromStrictMaybe Nothing' = return $ Nothing
50fromStrictMaybe (Just' a) = return $ Just a
52-------------------------------------------------------------------------------
54-------------------------------------------------------------------------------
57data Either' a b = Left' !a | Right' !b
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list