Scala

Haskell


Reading List

What I Wish I Knew When Learning Haskell

Glassery

GitHub

MaxwellBo/scratches

import qualified Data.Text as T
import qualified Data.Text.Lazy as TL
import qualified Data.ByteString as BS
import qualified Data.ByteString.Lazy as BL
import qualified Data.ByteString.Char8 as C
import qualified Data.ByteString.Lazy.Char8 as CL

import qualified Data.Text.IO as TIO
import qualified Data.Text.Lazy.IO as TLIO

import qualified Data.Text.Encoding as TE
import qualified Data.Text.Lazy.Encoding as TLE
-- CONTROL FLOW
{-# LANGUAGE ViewPatterns #-}
headNil :: [a] -> [a]
headNil (headMay -> Just x) = [x]
headNil _ = []

{-# LANGUAGE TupleSections #-}
first :: a -> (a, Bool)
first = (,True)

{-# LANGUAGE MultiWayIf #-}
bmiTell :: Float -> String
bmiTell bmi = if
  | bmi <= 18.5 -> "You're underweight."
  | bmi <= 25.0 -> "You're average weight."
  | otherwise -> "You're overewight."

{-# LANGUAGE LambdaCase #-}
\\case
  p1 -> 32
  p2 -> 32

-- RECORDS
{-# LANGUAGE RecordWildCards #-} 
-- Extracting from a record using wildcards.
scope :: Example -> (Int, Text, Text)
scope Example {..} = (e1, e2, e3)

-- Assign to a record using wildcards.
assign :: Example
assign = Example {..}
  where
    (e1, e2, e3) = (1, "Kirk", "Picard")

{-# LANGUAGE DuplicateRecordFields #-}

-- Derives
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveFoldable #-}
{-# LANGUAGE DeriveTraversable #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}

-- Text fixes
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ExtendedDefaultRules #-}
import qualified Data.Text as T
default (T.Text)

{-# LANGUAGE OverloadedLists #-}
modusPonens :: (p -> q) -> p -> q
modusPonens = ($)
nonEmptySubstrings :: [a] -> [[a]]
nonEmptySubstrings = concatMap (tail . inits) . tails

count :: Ord a => [a] -> Map.Map a Int
count input = Map.fromListWith (+) [(c, 1) | c <- input]

Sensible Libs

Algebras we love

Autoderriving FAM instances

r/haskell - Automatically filling in pure, , fmap from Monad instance