Skip to content

Instantly share code, notes, and snippets.

View polytypic's full-sized avatar
⏸️

Vesa Karvonen polytypic

⏸️
  • Helsinki, Finland
View GitHub Profile
@polytypic
polytypic / tiv.1ml
Last active November 18, 2019 07:20
Type indexed values in 1ML
;; Type indexed values in 1ML
;;
;; This is a very simple experiment at encoding type-indexed values in 1ML.
;;
;; Background:
;;
;; https://people.mpi-sws.org/~rossberg/1ml/
;; http://repository.readscheme.org/ftp/papers/zheyang-icfp98.pdf
;;
;; Run as:
@polytypic
polytypic / prelude-extra.1ml
Last active March 20, 2018 06:05
Profunctor optics in 1ML --- WORK-IN-PROGRESS!
;; -----------------------------------------------------------------------------
;; Unit type
Unit :> {
type t;
one : t;
} = {
type t = bool;
one = true;
};
@polytypic
polytypic / optics.re
Created May 15, 2017 06:46
Experimental optics in Reason (avoiding higher-kinded abstractions)
let id x => x;
let always x _ => x;
let (>>) f g x => g (f x);
let (<|) f x => f x;
module Option = {
type t 'a = option 'a;
let toArray xO => switch xO {
| None => [||]
| Some x => [|x|]
@polytypic
polytypic / hyphenated.js
Last active November 20, 2016 11:23
Finnish language hyphenation hack with React.
import * as R from "ramda"
import React from "react"
// Rules from http://www.cse.tkk.fi/fi/opinnot/CSE-A1121/English2015/harjoitukset/kierros_2/harj_1/index.html
// Nope, I haven't rigorously checked that I implemented the rules correctly.
const consonantRule =
R.replace(/([aeiouyäö])([b-df-hj-np-tvwxz]*)([b-df-hj-np-t-tvwxz])([aeiouyäö])/gi,
"$1$2\xAD$3$4")
// So called van Laarhoven lenses, named after their discoverer, have a number
// of nice properties as explained by Russell O'Connor:
//
// http://r6.ca/blog/20120623T104901Z.html
//
// Unfortunately their typing (in Haskell)
//
// type Lens s t a b = forall f. Functor f => (a -> f b) -> (s -> f t)
//
// seems to be well outside of what can be achieved in F#.