do-list: List construction with do notation

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

Please see README.md


[Skip to Readme]

Modules

[Index]

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 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 2016-09-08T05:42:17Z
Distributions LTSHaskell:1.0.1, NixOS:1.0.1, Stackage:1.0.1
Reverse Dependencies 1 direct, 0 indirect [details]
Downloads 4708 total (24 in the last 30 days)
Rating (no votes yet) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user
Build status unknown [no reports yet]

Readme for do-list-0.9.0

[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