Skip to content

Instantly share code, notes, and snippets.

@aisamanra
aisamanra / pratt.hs
Created March 11, 2016 22:22
a simple pratt parser in Haskell
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
import Data.Map.Strict (Map)
import qualified Data.Map.Strict as M
import MonadLib
type Tables t a = (PrefixMap t a, InfixMap t a)
newtype PrattM t r a = PrattM
{ runPrattM :: ReaderT (Tables t r) (StateT [t] (ExceptionT String Id)) a
@aisamanra
aisamanra / tokile.rb
Created March 10, 2022 03:56
A terminal-based Wordle clone for four-letter Toki Pona words
require 'csv'
require 'set'
module Tokile
YELLOW = "\x1b[33m"
GREEN = "\x1b[32m"
CLEAR = "\x1b[39m"
UP = "\033[F"
{-# LANGUAGE OverloadedStrings #-}
module Main where
import Control.Applicative ((<|>))
import qualified Data.SCargot as SCargot
import qualified Data.SCargot.Language.Basic as SCargot
import Data.SCargot.Repr.Basic
import Data.Text (Text)
import qualified Text.Parsec as Parsec
@aisamanra
aisamanra / callbacks.rs
Last active May 3, 2024 20:24
Creating a HashMap of closures in Rust
#![feature(unboxed_closures)]
#![feature(core)]
#![feature(io)]
use std::old_io::stdio::{stdin};
use std::collections::HashMap;
// This is our toy state example.
#[derive(Debug)]
struct State {