Skip to content

Instantly share code, notes, and snippets.

View fizruk's full-sized avatar
♾️

Nikolai Kudasov fizruk

♾️
View GitHub Profile
@fizruk
fizruk / heapsort.hs
Last active December 17, 2015 04:19
Heap sort using State monad along with lenses to deal with heap.
{-# LANGUAGE TemplateHaskell, Rank2Types #-}
module Main where
import Prelude hiding (last)
import Control.Lens
import Control.Monad.State.Strict (StateT, evalStateT, put)
import Control.Monad.IO.Class (liftIO)
import Control.Monad (when)
import Control.Applicative ((<$>), (<*>), pure)
@fizruk
fizruk / robot.hs
Last active August 17, 2023 21:12
Monadic robot acting in a comonadic world
{-# LANGUAGE FlexibleInstances, DeriveFunctor, TypeFamilies #-}
module Main where
import Control.Comonad.Identity
import Control.Comonad.Trans.Class
import Control.Comonad.Trans.Cofree
import Control.Monad.Trans.Free
import Control.Monad (void)
import Control.Monad.State
@fizruk
fizruk / chat.hs
Created May 10, 2013 16:33
Simple chat with bots using FreeT monad transformers for both bots and environment.
{-# LANGUAGE TypeFamilies, ExistentialQuantification, FlexibleInstances #-}
module Main where
import System.IO (isEOF, hFlush, stdout)
import Data.Char (toLower, isDigit)
import Data.Maybe (isNothing)
import Control.Monad.Trans.Free
import Control.Monad.IO.Class (MonadIO, liftIO)
@fizruk
fizruk / pygments.hs
Created September 19, 2013 08:48
A Pandoc filter to use Pygments for Pandoc.
-- A Pandoc filter to use Pygments for Pandoc
-- Code blocks in HTML output
-- Nickolay Kudasov 2013
-- Requires Pandoc 1.12
import Text.Pandoc.Definition
import Text.Pandoc.JSON (toJSONFilter)
import Text.Pandoc.Shared
import Data.Char(toLower)
import System.Process (readProcess)
@fizruk
fizruk / Simulation.hs
Created November 3, 2013 14:44
Step-by-step simulation with Gloss and IterT.
{-# LANGUAGE TemplateHaskell #-}
module Main where
import Control.Monad
import Control.Monad.State
import Control.Monad.Trans.Iter
import Control.Lens
import Data.Set (Set)
import qualified Data.Set as Set
@fizruk
fizruk / test.hs
Last active December 28, 2015 04:19 — forked from bgamari/TH.hs
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE FlexibleContexts #-}
module Main where
import Control.Monad
import Control.Monad.Free
import Control.Monad.Free.TH
data Lang next
@fizruk
fizruk / bundles.vim
Created December 24, 2013 20:11
Bundles I use
" General bundles
NeoBundle 'Shougo/vimproc', {
\ 'build' : {
\ 'windows' : 'make -f make_mingw32.mak',
\ 'cygwin' : 'make -f make_cygwin.mak',
\ 'mac' : 'make -f make_mac.mak',
\ 'unix' : 'make -f make_unix.mak',
\ },
\ }
NeoBundle 'Shougo/unite.vim'
#!/usr/bin/python
import socket
import sys
# Create a TCP/IP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# Connect the socket to the port where the server is listening
server_address = ('localhost', 10000)
@fizruk
fizruk / Replay.hs
Last active August 29, 2015 14:13
Recording and replaying arbitrary FreeT computation. For what happened next see https://github.com/fizruk/replay-free
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE DeriveFunctor #-}
module Main where
import Control.Monad.Trans
import Control.Monad.Free.Class
import qualified Control.Monad.Trans.Free as FT
import qualified Control.Monad.Free as F
@fizruk
fizruk / fmap.hs
Last active August 29, 2015 14:19
Juxtaposition of fmaps.
-- 3
fmap fmap fmap
= fmap . fmap
-- 4
fmap fmap fmap fmap
= (fmap . fmap) fmap
= fmap (fmap fmap)
-- 5