do-list: List construction with do notation

[ bsd3, data, library, list, syntax ] [ Propose Tags ]

Please see README.md


[Skip to Readme]
Versions [faq] 0.8.0, 0.8.1, 0.9.0, 0.9.1, 1.0.0, 1.0.1
Change log changelog.md
Dependencies base (<5), dlist [details]
License BSD-3-Clause
Copyright 2016 Taras Serduke
Author Taras Serduke
Maintainer taras.serduke@gmail.com
Category Data, List
Home page https://github.com/tserduke/do-list
Bug tracker https://github.com/tserduke/do-list/issues
Source repo head: git clone https://github.com/tserduke/do-list
Uploaded by TarasSerduke at Sat Sep 10 09:18:31 UTC 2016
Distributions LTSHaskell:1.0.1, NixOS:1.0.1, Stackage:1.0.1
Downloads 2160 total (107 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs available [build log]
Last success reported on 2016-09-10 [all 1 reports]

Modules

[Index]

Downloads

Maintainer's Corner

For package maintainers and hackage trustees


Readme for do-list-0.9.1

[back to package description]

do-list

DoList makes it easy to use do notation for defining list structures.

Examples

Benchmarks

module Main (main) where

import Criterion.Main
import Data.DoList (DoList, item, toList)

main :: IO ()
main = defaultMain $ toList $ do
  doBench "plus"  $ whnf (2 +) (1 :: Int)
  doBench "minus" $ whnf (2 -) (1 :: Int)

-- Now we can define benchmarks with do notation.
doBench :: String -> Benchmarkable -> DoList Benchmark ()
doBench name = item . bench name

Multiline Text

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -fno-warn-unused-do-bind #-}

module Main (main) where

import BasicPrelude
import Data.DoList (DoList, toList)

main :: IO ()
main = putStr $ runLines $ do
  "fib 0 = 0"
  "fib 1 = 1"
  "fib n = fib (n-1) + fib (n-2)"

runLines :: DoList Text () -> Text
runLines = unlines . toList