Skip to content

Instantly share code, notes, and snippets.

@soupi
soupi / CalcCompiler.hs
Created September 4, 2015 21:17
A compiler for a Lisp like calculator language which compiles to JavaScript from scratch
{-# LANGUAGE LambdaCase #-}
module CalcCompiler where
import Data.Monoid (Monoid,mempty)
import Control.Applicative (Applicative, pure, (<$>), (<*>), Alternative, empty, (<|>))
import Control.Arrow (first)
import qualified Data.Map as M
------------
@soupi
soupi / MySDL.hs
Last active December 3, 2015 20:16
an SDL2 runtime boilerplate management
-- MySDL: some wrappers and utility functions around SDL
{-# LANGUAGE LambdaCase #-}
module MySDL.MySDL where
import Data.Word (Word8)
import Data.Text (Text)
import Control.Monad (when)
import Control.Monad.IO.Class (MonadIO, liftIO)
@soupi
soupi / Colors.hs
Created September 12, 2015 20:32
ansi-terminal colors
module Colors where
import qualified System.Console.ANSI as ANSI
main :: IO ()
main = putStrLn text
text :: String
text =
concat
@soupi
soupi / Less.hs
Created October 9, 2015 13:07
a file reader similar to less
module Main where
import System.IO (hSetBuffering, stdin, BufferMode(NoBuffering))
import Control.Monad (unless)
import System.Process (system)
import System.Environment (getArgs)
stepSize :: Int
stepSize = 30
@soupi
soupi / slides.elm
Last active April 26, 2016 16:02
demonstration of a simple EDSL to create a slideshow in Elm
import Html
import Html.Attributes as Html
import List
import Signal
import Keyboard
main =
Signal.map (render << .current) (mkSlides slides)
@soupi
soupi / Main.purs
Created December 5, 2015 21:37
simple purescript-signal + purescript-canvas example
module Main where
import Prelude
import Data.Maybe
import Control.Monad.Eff
import Graphics.Canvas as C
import Signal as S
import Signal.DOM as S
@soupi
soupi / Main.purs
Created December 6, 2015 20:59
Two moving rectangles, purescript-signal + purescript-canvas
module Main where
import Prelude
import Data.Lens
import Data.Array
import Data.Maybe
import Math
import Data.Traversable
import Control.Monad.Eff
@soupi
soupi / Main.purs
Created December 7, 2015 18:57
Moving rectangles + collision detection: purescript-signal + purescript-canvas
module Main where
import Prelude
import Data.Lens
import Data.Array
import Data.Maybe
import Math
import Data.Foldable
import Data.Traversable
@soupi
soupi / Lisp.hs
Last active October 30, 2023 10:45
A transpiler from a simple S-expression language to JS
{-# LANGUAGE LambdaCase #-}
-- http://gilmi.xyz/post/2016/10/14/lisp-to-js
module Main where
import Control.Applicative (Alternative, empty, (<|>))
import Control.Arrow (first, (***))
import Data.Bool (bool)
import Data.List (intercalate)
@soupi
soupi / PureScript-Ecosystem.md
Created June 27, 2016 17:29
Useful PureScript packages and tools

Basics

Necessities

  • purescript-prelude
  • purescript-console
  • purescript-debug
  • purescript-partial
  • purescript-psci-support