Skip to content

Instantly share code, notes, and snippets.

@chansey97
chansey97 / ctfp-14.3.6-wrong-solution.hs
Created November 27, 2019 08:21
ctfp-14.3.6-wrong-solution
{-# LANGUAGE DeriveFunctor, TypeFamilies #-}
module Main where
data Pair a = Pair a a
deriving (Eq)
getFst :: Pair a -> a
getFst (Pair x1 _) = x1
@chansey97
chansey97 / ctfp-14.3.6-correct-solution.hs
Created November 27, 2019 08:23
ctfp-14.3.6-correct-solution
{-# LANGUAGE DeriveFunctor, TypeFamilies #-}
module Main where
data Pair a = Pair a a
deriving (Eq)
getFst :: Pair a -> a
getFst (Pair x1 _) = x1
@chansey97
chansey97 / PCP.hs
Last active March 3, 2021 16:46
Solve PCP by BFS.
module PCP where
import Data.List
import Data.Tree
-- breadth-first traversal
levelf :: Forest a -> [[a]]
levelf = unfoldr f
where f [] = Nothing
f xs = Just (map rootLabel xs, concat $ map subForest xs)
@chansey97
chansey97 / Crush.hs
Last active March 3, 2021 16:46
Implement cursh by Foldable.
module Crush(
AST(..)
, crush
, crushMap
, crushMapM
-- debugging
, buildAst
, printAst
) where
module Bridge where
import Data.List
import Data.Maybe
import qualified Data.Tree as DTree
import qualified Data.Map as Map
-- Note that user must ensure there is at least one (0, x) in pieces
pieces :: [Piece]
pieces = [(0,2), (2,2), (2,3), (3,4), (3,5), (0,1), (10,1), (9,10)]
@chansey97
chansey97 / do-notation-maybe-local-eval.scm
Last active March 3, 2021 16:46
do-notation for maybe monad by `local-eval` and `the-environment `.
;guile 2.2.3
(use-modules (ice-9 local-eval))
(use-modules (ice-9 match))
(use-modules (srfi srfi-9))
(define-record-type Just
(make-Just x)
Just?
(x Just-x))
@chansey97
chansey97 / Crush.hs
Last active March 3, 2021 16:46
Implement cursh by Traversable.
{-# LANGUAGE DeriveFunctor #-}
module Crush(
AST(..)
, crush
, crushMap
, crushMapM
-- debugging
, buildAst
, printAst
#lang racket
(define the-key 'the-key)
(define the-spell-book 'the-spell-book)
(define person%
(class object%
(init-field items h)
(super-new)
#lang racket
(define the-key 'the-key)
(define the-spell-book 'the-spell-book)
(define person%
(class object%
(init-field items h)
(super-new)
@chansey97
chansey97 / stack.rkt
Created March 3, 2021 16:41
An imperative stack implementation in Racket.
#lang racket
(provide (except-out (all-defined-out)
stack))
(struct exn:fail:stack exn:fail ())
(struct stack ([vector]
[top #:mutable])
#:transparent)