Skip to content

Instantly share code, notes, and snippets.

View qnikst's full-sized avatar
🐧
penguin?

Alexander Vershilov qnikst

🐧
penguin?
View GitHub Profile
@qnikst
qnikst / Spaghetti.hs
Created April 18, 2012 23:30
Awful attempt to code gauss' method
gauss :: [[Double]] -> [Double]
gauss m = let (m',is) = gauss0 m
in order is $ gauss2 $ gauss1 m
gauss0 :: [[Double]] -> ([[Double]],[Int])
gauss0 m = let ( mt,is) = foldr choose (trns m,straight) straight
in (trns mt,is)
where choose k (mt,is) = let row = m !! (k-1)
q = (+) 1 $ fromJust $ elemIndex (maximum $ init $ drop (k-1) row) row
in (swap' k q mt, swap' k q is)
@qnikst
qnikst / DeriveADT.hs
Created June 8, 2012 15:19 — forked from pxqr/gist:2893200
Question: Deriving boilerplate matching function.
{-# LANGUAGE TemplateHaskell #-}
module DeriveADT
( deriveExtract
, deriveIs
) where
import Data.Maybe
import Data.Char
import Language.Haskell.TH
@qnikst
qnikst / magick.hs
Created August 28, 2012 17:47 — forked from Shimuuar/gist:3501111
Do magik
import Data.Default
import Debug.Trace
class Magick a where
magickStorage :: [a] -> String
instance Magick Int where
magickStorage = const "Int"
instance Magick Char where
@qnikst
qnikst / gist:5285242
Last active December 15, 2015 15:58 — forked from voidlizard/gist:5285196
{-# LANGUAGE BangPatterns #-}
module Main where
import qualified Data.ByteString as BS
import System.IO
import Control.Monad
import Data.Bits
import Data.Word
import Data.Monoid
import Network.Openflow.StrictPut
{-# LANGUAGE BangPatterns #-}
import Control.Applicative
import Prelude hiding (minimum, sum)
import Data.List (permutations)
import Control.Monad.ST
import Data.Bifunctor (second)
-- import Control.Monad
-- import Data.Array.ST
-- import Data.Array.Unboxed
import Data.Vector.Unboxed (Vector)
import Data.List
import Control.Monad.ST
import Control.Monad
import Data.Array.ST
import Data.Array.Unboxed
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)
| Copy Int Int -- a[i] <- a[j] (i > 7)
deriving Show
{-# LANGUAGE TemplateHaskell, StandaloneDeriving, MultiParamTypeClasses, TypeFamilies, GeneralizedNewtypeDeriving #-}
import Control.Monad
import Control.Concurrent
import Control.Distributed.Process
import Control.Distributed.Process.Backend.SimpleLocalnet
import Control.Distributed.Process.Closure
import Control.Distributed.Process.Internal.Types (Process(..), LocalProcess)
import Control.Distributed.Process.Node (initRemoteTable)
import Control.Monad.Base (MonadBase(..))
@qnikst
qnikst / woker.hs
Created October 27, 2015 10:43 — forked from ndtimofeev/woker.hs
{-# LANGUAGE ExistentialQuantification #-}
-- base
import Control.Exception
import Control.Concurrent.MVar
import Control.Monad
import Data.IORef
import System.IO.Unsafe
@qnikst
qnikst / get.hs
Last active January 12, 2016 07:03 — forked from ndtimofeev/get.hs
-- stylistic
{-# LANGUAGE LambdaCase #-}
-- singletons
{-# LANGUAGE TemplateHaskell #-}
{-# LANGUAGE Rank2Types #-}
{-# LANGUAGE GADTs #-}
-- main
{-# LANGUAGE DataKinds #-} -- typelevel programming
{-# LANGUAGE TypeFamilies #-} -- typelevel programming
{-# LANGUAGE ScopedTypeVariables #-} -- typelevel programming
@qnikst
qnikst / Foo.hs
Last active January 10, 2016 19:13 — forked from max630/Foo.hs
attempt to use DataKinds
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE FunctionalDependencies #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE ExplicitNamespaces #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE UndecidableInstances #-}
module Foo where