Skip to content

Instantly share code, notes, and snippets.

import Data.List
import Data.Maybe
import Data.Char
data Person = Person { name :: String, age :: Int } deriving (Show)
main :: IO ()
main = do
let pList = [Person "Jack" 11,Person "Bill" 48,Person "Tom" 19,Person "Dane9" 22,Person "Jimmy9" 13]
let validatedL = map validatePerson pList
{-# LANGUAGE OverloadedStrings #-}
import Data.Maybe
import qualified Data.Text as T
import qualified Data.Text.IO as TIO
import Text.Read
data Car = Car{year:: Int, mark:: T.Text, model:: T.Text, comment:: T.Text, price:: Float } -- Double
-- a b c d e
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
import Network.HTTP.Conduit
import Network.HTTP.Simple
import Control.Monad
import qualified Data.ByteString.Lazy.Char8 as L8
import qualified Data.ByteString.Char8 as C
import Control.Exception (try)
import Control.Concurrent.Async
@SergeyStretovich
SergeyStretovich / Tictactoe_Freer_monad.hs
Last active July 6, 2020 21:32
Toying around Freer monad with Tic-Tac-Toe
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE TypeOperators #-}
module Main where
import System.Console.ANSI
@SergeyStretovich
SergeyStretovich / Tictactoe_Free_monad.hs
Last active July 6, 2020 21:29
Free monad in Haskell, toying with Tic-Tac-Toe
{-# LANGUAGE DeriveFunctor #-}
import System.Random
import Data.List
import Data.String
import System.Console.ANSI
import Control.Monad.Free
import Prelude
initState = ["0", "1", "2", "3", "4", "5", "6", "7", "8" ]
@SergeyStretovich
SergeyStretovich / Freer monad file reading exception.hs
Last active July 10, 2020 08:57
Exception handling example Freer monad (with freer-simple)
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE ScopedTypeVariables #-}
module Main where
@SergeyStretovich
SergeyStretovich / From_zero_to_cooperative_threads_in_33_lines_of_Haskell_code.hs
Last active July 9, 2020 08:17
Usage example of Free monad - compilable and working code for an Gabriel Gonzalez's article "From zero to cooperative threads in 33 lines of Haskell code"
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE DeriveAnyClass #-}
import Data.Sequence
import Control.Monad
import Control.Monad.IO.Class
import Control.Applicative
import Control.Monad.Trans.Free
data ThreadF next = Fork next next
@SergeyStretovich
SergeyStretovich / Merge_effect_interpreters_freer_monad.hs
Created July 10, 2020 08:38
Freer monad - merge effect interpreters using freer-simple
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GADTs #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE MonoLocalBinds #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE ConstraintKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE Rank2Types #-}
@SergeyStretovich
SergeyStretovich / MultiparamTypeClasses example.hs
Last active July 26, 2020 08:34
Toying with haskell MultiParamTypeClasses
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE AllowAmbiguousTypes #-}
data TestItem b n = TestItem {itemName::b, itemValue::n}
class (Num n,IsString b) => PieChartItem a b n where
getValue :: a -> n
getName :: a -> b
@SergeyStretovich
SergeyStretovich / Haskell_gtk2hs_filtering_treeview.hs
Created July 31, 2020 17:13
Playing with Gtk in Haskell (gtk2hs), making my TreeView widget filterable
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE ScopedTypeVariables #-}
import Data.IORef
import Graphics.UI.Gtk
import Graphics.UI.Gtk.ModelView
import qualified Data.Text as T
import Graphics.UI.Gtk.Gdk.Events as Ev
import Data.Maybe
import System.IO.Unsafe