Skip to content

Instantly share code, notes, and snippets.

Chas Emerick cemerick

Block or report user

Report or block cemerick

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
View box.ml
type a = [ `A of int ]
type b = [ a | `B of int ]
let pair (a : a) (b : b) = ([a] :> b list) @ [b] (* works fine *)
module type Config = sig type t end
module type Box = sig
module C : Config
type t = { regions : C.t list }
View poly.ml
(****** works ******)
type foo = [`A of int | `B of int]
module type K = sig
type t
val value: t -> int
end
module J (K: K) = struct
let value = K.value
end
module FooJ = J(struct
View foo.ml
type _ foo =
| A : int -> int foo
| B : int -> int foo
module FooSet = Set.Make(struct
type t
let compare a b =
let a' = match a with A x -> x | B x -> x in
let b' = match b with A x -> x | B x -> x in
Pervasives.compare a' b'
end)
View foo.ml
let rec sweep responsibility t =
let neighbors = of_list t.members
|> filter (G.bounds %> extentEligible)
|> filter (distinct seenMembers G.bounds) in
|> persistent
if not @@ is_empty neighbors
then neighbors
else do_something_else
View empty.ml
open Containers
let _ = let lst = [1;2;3] in
let open Sequence in
let open Format in
let s = of_list lst in
if not @@ is_empty s
then print_endline "not empty";
Format.printf "%a" (List.pp pp_print_int) (to_list s)
(*
@cemerick
cemerick / .gitlab-ci.yml
Created Feb 11, 2019
basic OCaml gitlab CI config
View .gitlab-ci.yml
image: ocaml/opam2:ubuntu-lts
stages:
- build
- test
build:
# https://docs.gitlab.com/ee/ci/yaml/#cache
stage: build
cache:
View .ghci
-- mostly ripped off from https://teh.id.au/posts/2017/02/13/interactive-print/index.html
:{
:def pp (\_ -> return
$ unlines ["import qualified Text.Show.Pretty as SP",
"import qualified Language.Haskell.HsColour as HSC",
"import Language.Haskell.HsColour.Colourise (defaultColourPrefs)",
"_colorPrint = putStrLn . HSC.hscolour HSC.TTY defaultColourPrefs False False \"\" False . SP.ppShow",
":set -interactive-print _colorPrint"])
:}
View Foo.hs
class Foo a where
bar :: a -> String
instance {-# OVERLAPPING #-} Foo String where
bar = id
instance (Num a, Show a) => Foo a where
bar = show
View Foo.hs
data Val = Val { foobar :: Int } deriving (Generic, Show)
instance JSON.FromJSON Val where
parseJSON = JSON.genericParseJSON
$ JSON.defaultOptions { JSON.fieldLabelModifier = filter (/= '-') }
{-
$ eitherDecode "{\"foo-bar\": 1}" :: Either String Val
Left "Error in $: key \"foobar\" not present"
-}
View MealyDataflow.hs
data Validity = Invalid | Valid deriving (Eq, Show, Generic, NFData)
data Readiness = NotReady | Ready deriving (Eq, Show, Generic, NFData)
asValid x = if x then Valid else Invalid
asReady x = if x then Ready else NotReady
data DFIO a = DFIO { valid :: Validity, ready :: Readiness, val :: a } deriving (Eq, Show, Generic, NFData)
dfio iV oR dat = DFIO (asValid iV) (asReady oR) dat
pending placeholder = DFIO Invalid NotReady placeholder
done result = DFIO Valid Ready result
You can’t perform that action at this time.