Skip to content

Instantly share code, notes, and snippets.

View kseo's full-sized avatar

Kwang Yul Seo kseo

  • CodeChain
  • Seoul
View GitHub Profile
@kseo
kseo / recon.ml
Last active March 28, 2024 14:41
A Hindley-Milner type inference implementation in OCaml
#! /usr/bin/env ocamlscript
Ocaml.ocamlflags := ["-thread"];
Ocaml.packs := [ "core" ]
--
open Core.Std
type term =
| Ident of string
| Lambda of string * term
| Apply of term * term
@kseo
kseo / QuickUnion.hs
Last active July 31, 2023 13:53
The weighted quick-union with path compression algorithm
import Control.Monad
import Control.Monad.ST
import Data.Array.MArray
import Data.Array.ST
import Data.STRef
import Prelude hiding (id)
data UnionFind s = UnionFind {
ids:: STUArray s Int Int
@kseo
kseo / CombinatorParser.hs
Created December 20, 2013 03:10
Monadic Parsing in Haskell
module CombinatorParser where
import Control.Monad
import Data.Char
-- FUNCTIONAL PEARLS: Monadic Parsing in Haskell
-- http://eprints.nottingham.ac.uk/223/1/pearl.pdf
newtype Parser a = Parser { parse :: (String -> [(a, String)]) }
@kseo
kseo / Eval.hs
Created March 7, 2016 02:12
Monad Transformers Step by Step
odule Eval where
import Control.Monad.Identity
import Control.Monad.Error
import Control.Monad.Reader
import Control.Monad.State
import Control.Monad.Writer
import Data.Maybe
import qualified Data.Map as Map
@kseo
kseo / Hello.hs
Created March 11, 2014 01:38
Fay Node.js Hello example
{-# LANGUAGE EmptyDataDecls #-}
module Hello where
import FFI
data Http
data HttpServer
data Request
data Response
@kseo
kseo / Option.cs
Created January 19, 2015 07:00
Step by step implementation of Option type in C#
using System;
namespace Option
{
public abstract class Option<T>
{
public abstract T Value { get; }
public abstract bool IsSome { get; }
@kseo
kseo / transaction_group.rs
Created May 4, 2018 00:26
TransactionGroup
pub struct TransactionGroup {
/// Nonce.
pub nonce: U256,
/// Amount of CCC to be paid as a cost for distributing these transactions to the network.
pub fee: U256,
/// Transactions
pub transactions: Vec<Transaction>,
/// Mainnet or Testnet
pub network_id: u64,
}
@kseo
kseo / transaction.rs
Last active May 1, 2018 03:09
AssetOutPoint
pub struct AssetOutPoint {
pub transaction_hash: H256,
pub index: usize,
pub asset_type: H256,
pub amount: u64,
}
@kseo
kseo / DockerAPI.hs
Created January 23, 2017 15:10
Docker API: SSL authentication
{-# LANGUAGE NamedFieldPuns #-}
import Control.Monad (when)
import qualified Data.ByteString.Char8 as BSC
import Data.Default.Class (def)
import Data.Monoid ((<>))
import System.IO.Error (ioError, userError)
import Data.X509 (CertificateChain (..), HashALG(..))
import Data.X509.CertificateStore (makeCertificateStore)
@kseo
kseo / DOM.hs
Created December 7, 2016 14:57
DOM parser
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE TypeFamilies #-}
module Beard.DOM
( Element(..)
, Node(..)
, parseDOM
) where
import Control.Monad (when)