Skip to content

Instantly share code, notes, and snippets.

View david-christiansen's full-sized avatar

David Thrane Christiansen david-christiansen

  • Copenhagen, Denmark
View GitHub Profile
@david-christiansen
david-christiansen / Prov.idr
Created May 15, 2014 12:06
Compile-time QuickCheck as a type provider in Idris
import QuickCheck
import Providers
%language TypeProviders
prop_RevRev : Eq a => List a -> Bool
prop_RevRev xs = reverse (reverse xs) == xs
stupid : List a -> List a
module Main
import System.Random.TF.Gen
genNums : Int -> TFGen -> IO TFGen
genNums i gen = if i > 0 then
let (n, gen') = tfGenNext gen in
do putStrLn (show i ++"\t0x"++show n)
genNums (i-1) (fst (split gen'))
else return gen
@david-christiansen
david-christiansen / SExpParse.idr
Created March 25, 2014 00:35
Prototype parser for Idris's machine-readable interaction syntax
module SExpParse
import Lightyear.Core
import Lightyear.Combinators
import Lightyear.Strings
%default total
data MessageFmt = KWD String
| STRING
@david-christiansen
david-christiansen / Test.idr
Created February 6, 2014 20:27
Statically checked embedded subset of SQL in Idris
module Test
import Provider
import Database
import Queries
%language TypeProviders
%link C "sqlite3api.o"
%reflection
solveHasTable : Type -> Tactic
solveHasTable (HasTable (_::tl) name s) =
Try (Refine "Here" `Seq` Solve)
(Refine "There" `Seq` (Solve `Seq` solveHasTable (HasTable tl name s)))
solveHasTable (HasTable (a++b) _ _) = Refine "Here" `Seq` Solve
solveHasTable (HasTable _ name s) = Refine "Here" `Seq` Solve