Skip to content

Instantly share code, notes, and snippets.

Avatar

Vesa Karvonen polytypic

  • Helsinki, Finland
View GitHub Profile
@polytypic
polytypic / amateurfunctor-optics.1ml
Last active Apr 2, 2018
Amateurfunctor optics in 1ML --- WORK-IN-PROGRESS!
View amateurfunctor-optics.1ml
;; Amateurfunctor optics in 1ML --- WORK-IN-PROGRESS!
;;
;; Background:
;;
;; https://people.mpi-sws.org/~rossberg/1ml/
;; http://r6.ca/blog/20120623T104901Z.html
;;
;; Run as:
;;
;; ./1ml prelude.1ml amateurfunctor-optics.1ml
@polytypic
polytypic / tiv.1ml
Last active Nov 18, 2019
Type indexed values in 1ML
View tiv.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 Mar 20, 2018
Profunctor optics in 1ML --- WORK-IN-PROGRESS!
View prelude-extra.1ml
;; -----------------------------------------------------------------------------
;; Unit type
Unit :> {
type t;
one : t;
} = {
type t = bool;
one = true;
};
@polytypic
polytypic / optics.re
Created May 15, 2017
Experimental optics in Reason (avoiding higher-kinded abstractions)
View optics.re
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 Nov 20, 2016
Finnish language hyphenation hack with React.
View hyphenated.js
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")
View polymorphic-lenses.fs
// 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#.
You can’t perform that action at this time.