Skip to content

Instantly share code, notes, and snippets.

View qrilka's full-sized avatar
🖥️
as always

Kirill Zaborsky qrilka

🖥️
as always
  • FP Complete
  • Arkhangelsk, Russia
View GitHub Profile
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE OverloadedStrings #-}
import Codec.Xlsx as X
import qualified Data.ByteString.Lazy as L
import Control.Lens
import Data.Time.Clock.POSIX
main :: IO ()
main = do
ct <- getPOSIXTime
{-# LANGUAGE BangPatterns #-}
import Data.List
import Control.Monad.ST
import Control.Monad
import Data.Array.ST
import Data.Array.Unboxed
import Data.Foldable(foldlM)
data Exp = IfGt Int Int Block Block -- if a[i] > a[j] then blk1 else blk2
| Swap Int Int -- a[i] <-> a[j] (i,j < 8)
@qrilka
qrilka / gist:2775077
Created May 23, 2012 12:50 — forked from rblaze/gist:2775009
Recursive descent parser for grammar S -> baSab ∣ baS ∣ b
module Main where
import Control.Monad (when)
import Control.Applicative ((<|>))
import Data.List
import Data.Maybe
import Debug.Trace
pS :: String -> Maybe String