Skip to content

Instantly share code, notes, and snippets.

@gglouser
gglouser / day7.hs
Last active January 10, 2016 20:33
import Control.Applicative
import Data.Bits
import Data.Word
import qualified Data.Map.Lazy as Map
import qualified Text.Parsec as P
type Ident = String
type Signal = Word16
data Val = VIdent Ident | VNum Signal deriving Show
data Expr
-- brainfuck experiment 7 - free functor sums a la https://gist.github.com/avieth/334201aa341d9a00c7fc
{-# LANGUAGE DeriveFunctor #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE FlexibleContexts #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE KindSignatures #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# LANGUAGE OverlappingInstances #-}
{-# LANGUAGE RankNTypes #-}
@gglouser
gglouser / bfsmall.hs
Last active October 9, 2022 01:25
Moderately abominable brainfuck interpreter in Haskell.
import Control.Applicative
import Control.Monad.State
import Foreign
import System.Environment
import Text.Parsec as P
m=modify.flip advancePtr
r=get>>=lift.peek
w x=get>>=lift.flip poke x
a n=r>>=w.(+n)
c x=toEnum$fromEnum x