Skip to content

Instantly share code, notes, and snippets.

Avatar

Oskar Wickström owickstrom

View GitHub Profile
@owickstrom
owickstrom / test.ex
Created Nov 18, 2014
Missing binary concatenation operator in Elixir gives no warning
View test.ex
defmodule BinaryConcat do
def run do
data =
<<65, 32, 119, 97>> <>
<<114, 110, 105, 110>> # <- binary concatenation operator missing here
<<103, 32, 112, 101>> <>
<<114, 104, 97, 112, 115, 63>>
IO.puts <<data :: binary>>
end
@owickstrom
owickstrom / typed_pmap.clj
Created Dec 11, 2014
core.typed pmap error
View typed_pmap.clj
(require '[clojure.core.typed :as t])
; This seem to work nicely
(t/cf (identity 1)) ;=> [(t/Val 123) {:then tt, :else ff}]
; And this
(t/cf pmap) ;=> (All [c a b ...] (t/IFn [[a b ... b -> c] (t/NonEmptySeqable a) (t/NonEmptySeqable b) ... b -> (t/NonEmptyASeq c)] [[a b ... b -> c] (t/U nil (Seqable a)) (t/U nil (Seqable b)) ... b -> (t/ASeq c)]))
; But when I combine the two...
(t/cf (pmap identity [1 2 3]) ;=> Type Error (/tmp/form-init5174330476817989076.clj:1:7) Polymorphic function pmap could not be applied to arguments:
@owickstrom
owickstrom / Eq.purs
Last active Aug 29, 2015
Purescript Eq instance
View Eq.purs
module Main where
import Debug.Trace
data T = A | B Number
instance eqT :: Eq T where
A == A = true
(B v1) == (B v2) = v1 == v2
_ == _ = false
@owickstrom
owickstrom / Rackla.hs
Created May 12, 2015
Rackla Types (in my mind, at least)
View Rackla.hs
module Main where
import Control.Applicative
-- value with type a is only for demo purposes, it would be supplied
-- asyncronously in Rackla (or with messages, I don't know how it works
-- exactly).
data PID a = PID a deriving (Show)
instance Functor PID where
@owickstrom
owickstrom / InstanceEffTrouble.purs
Last active Aug 29, 2015
Instance Effects Trouble
View InstanceEffTrouble.purs
module Test.Spec where
import Debug.Trace
import Control.Monad
import Control.Monad.Error.Class
import Control.Monad.Trans
import Control.Monad.Eff
import Control.Monad.Eff.Exception
import Control.Monad.Eff.Class
import Control.Monad.Aff
View output.json
{
"graph": {
"label": "Some Title",
"metadata": {
"id": "uc1"
},
"nodes": [
{
"id": "user",
"label": "User",
View recursive.clj
(ns scratch.core
(:require [clojure.core.typed :as t]))
(t/defalias DropboxEntry
(t/Rec [x]
(t/U '{:type (Value :file)
:path String
:mime-type String}
'{:type (Value :directory)
:path String
@owickstrom
owickstrom / Thing.cs
Created Oct 17, 2012
A simple Continuous Integration and Deployment workflow with ASP.NET MVC, GitHub and Jenkins (Changing the model)
View Thing.cs
public class Thing
{
public long ThingId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
@owickstrom
owickstrom / type-system.rkt
Created Oct 12, 2015
Minimalistic type system hack in Racket.
View type-system.rkt
#lang racket
(require "minikanren/mk.rkt")
(struct e/var (name) #:transparent)
(struct e/app (fn param) #:transparent)
(struct e/lam (arg body) #:transparent)
(define (t/fn domain range)
(list ':fn domain range))
@owickstrom
owickstrom / README.md
Last active Oct 27, 2015
Kashmir Programming Language - Draft
View README.md