Skip to content

Instantly share code, notes, and snippets.

View owickstrom's full-sized avatar

Oskar Wickström owickstrom

View GitHub Profile
@owickstrom
owickstrom / test.ex
Created November 18, 2014 05:39
Missing binary concatenation operator in Elixir gives no warning
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 December 11, 2014 05:01
core.typed pmap error
(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 August 29, 2015 14:19
Purescript Eq instance
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 11:09
Rackla Types (in my mind, at least)
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 August 29, 2015 14:21
Instance Effects Trouble
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
{
"graph": {
"label": "Some Title",
"metadata": {
"id": "uc1"
},
"nodes": [
{
"id": "user",
"label": "User",
(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 October 17, 2012 07:54
A simple Continuous Integration and Deployment workflow with ASP.NET MVC, GitHub and Jenkins (Changing the model)
public class Thing
{
public long ThingId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
}
@owickstrom
owickstrom / type-system.rkt
Created October 12, 2015 06:14
Minimalistic type system hack in Racket.
#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 October 27, 2015 08:46
Kashmir Programming Language - Draft