Skip to content

Instantly share code, notes, and snippets.

@aratama
aratama / Main.purs
Created October 3, 2016 14:57
PoorScript Interpleter (Extensible Effects version)
module Main where
import Control.Alt
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE)
import Control.Monad.Aff
import Control.Monad.Eff.Exception
import Control.Monad.Aff.Console (log, logShow)
import Control.Lazy (fix)
import Control.Monad.ST
@aratama
aratama / Main.purs
Last active October 3, 2016 15:13
PoorScript Interpreter (Monad transformers version)
module Main where
import Control.Alt
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE)
import Control.Monad.Aff
import Control.Monad.Eff.Exception
import Control.Monad.Aff.Console (log, logShow)
import Control.Monad.State.Trans
import Control.Lazy (fix)
module Throttle where
import Prelude (Unit(), unit, pure, ($), (<$>), (<#>), bind, void, (++), (==))
import Global (encodeURIComponent)
import Data.Maybe (Maybe(..))
import Data.Array ((!!))
import Data.Traversable (for)
import Data.Functor ((<$))
import Data.Date (Now(), nowEpochMilliseconds)
import Data.Time (Milliseconds(Milliseconds))
module Counter where
import Prelude (Unit(), pure, unit, ($), bind, show, void, (++), (+), (*), (<$>), const, negate, id)
import Data.Functor ((<$))
import Control.Monad.Aff (Aff(), runAff)
import Control.Monad.Eff (Eff())
import Control.Monad.Eff.Exception (throwException)
import Control.Monad.Eff.Class (liftEff)
import Halogen (HalogenEffects(), ComponentDSL(), Natural(), ComponentHTML(), Component(), action, runUI, component, set)
import Halogen.Util (appendToBody, onLoad)
module FizzBazz where
import Prelude (Unit(), (*), const, (++), (+), mod, (/=), (&&))
import Control.Monad.Eff (Eff())
import Control.Monad.Eff.Console (CONSOLE(), print, log)
import Signal ((<~), runSignal, foldp, filter)
import Signal.Time (every, second, delay)
main :: forall eff . Eff (console :: CONSOLE | eff) Unit
main = fizzbazz
module ReactiveTimer where
import Prelude (Unit(), (*))
import Data.String (toUpper)
import Control.Monad.Eff (Eff())
import Control.Monad.Eff.Console (CONSOLE(), print)
import Signal (constant, (<~), runSignal)
import Signal.Time (every, second)
main :: forall eff . Eff (console :: CONSOLE | eff) Unit
module MousePos where
import Prelude (Unit(), pure, ($), bind, show, void, (++))
import Data.Functor ((<$))
import Control.Monad.Aff (Aff(), runAff)
import Control.Monad.Eff (Eff())
import Control.Monad.Eff.Exception (throwException)
import Control.Monad.Eff.Class (liftEff)
import Halogen (HalogenEffects(), ComponentDSL(), Natural(), ComponentHTML(), Component(), action, runUI, component, set)
import Halogen.Util (appendToBody, onLoad)
module HelloWorld where
import Prelude (Unit())
import Data.String (toUpper)
import Control.Monad.Eff (Eff())
import Control.Monad.Eff.Console (CONSOLE(), log)
import Signal (constant, (<~), runSignal)
main :: forall eff . Eff (console :: CONSOLE | eff) Unit
main = runSignal (log <~ toUpper <~ constant "Hello, reactive world")
module HelloWorld where
import Prelude (Unit())
import Control.Monad.Eff (Eff())
import Control.Monad.Eff.Console (CONSOLE(), log)
import Signal (constant, (<~), runSignal)
main :: forall eff . Eff (console :: CONSOLE | eff) Unit
main = runSignal (log <~ constant "Hello, reactive world")
module Main where
import Prelude (Unit(), unit, pure, ($), (<$>), (<#>), map, bind, show, void, const, (++), (==))
import Data.Maybe (Maybe(..), fromMaybe)
import Data.Either (either)
import Data.Array (updateAt, take, drop, findIndex, head, tail, replicate)
import Data.Traversable (for)
import Data.Functor ((<$))
import Control.Monad.Aff (Aff(), runAff)
import Control.Monad.Eff (Eff())