Skip to content

Instantly share code, notes, and snippets.

View Unisay's full-sized avatar
🏠
Haskelling from home

Yura Lazarev Unisay

🏠
Haskelling from home
  • Berlin
View GitHub Profile
@Unisay
Unisay / Fibonaccis.lua
Last active May 1, 2024 10:52
Example using Z combinator to calculate Fibonacci in Lua
fibonacciTailRec = function(n, val, prev)
if n == 0 then
return prev
else
return fibonacciTailRec(n - 1, val + prev, val)
end
end
fibonacciCps = function(n, cont)
if n < 2 then
@Unisay
Unisay / keybase.md
Created October 15, 2019 08:49
Keybase Identity

Keybase proof

I hereby claim:

  • I am Unisay on github.
  • I am unisay (https://keybase.io/unisay) on keybase.
  • I have a public key whose fingerprint is 7690 6BA4 8EE2 2D9F F071 7CF9 4560 6739 6414 3DB1

To claim this, I am signing this object:

@Unisay
Unisay / church.hs
Last active October 4, 2019 12:29
Church encoding demonstration
#!/usr/bin/env stack
-- stack --resolver lts-14.7 script
-- How I run it:
-- fswatch -o src | xargs -n1 -I{} sh -c 'clear && ./src/church.hs'
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE NoImplicitPrelude #-}
@Unisay
Unisay / Test.hs
Created March 13, 2018 20:43
Nested brackets vs. ContT
module Control.Test where
import Data.Monoid
import Data.Functor
import Control.Exception
import Control.Monad.Trans.Cont
import Control.Monad.Trans.Class
import Text.Printf
open :: String -> IO String
@Unisay
Unisay / Lens.hs
Created January 28, 2018 19:34
Lens
{-# LANGUAGE RankNTypes, ScopedTypeVariables #-}
{- https://skillsmatter.com/skillscasts/4251-lenses-compositional-data-access-and-manipulation -}
module Lens.My where
import Prelude
import Data.Functor.Identity
import Data.Functor.Const
import Lens.Data
module Main where
import Data.Typelevel.Num (class LtEq, class Mod, class Pos, type (:*), D0, D2, D5, D6, D8, d8)
type D256 = D2 :* D5 :* D6
testPositive :: ∀ a . Pos a => a -> Boolean
testPositive _ = true
testLtEq256 :: ∀ a . LtEq a D256 => a -> Boolean
@Unisay
Unisay / CmRDT.scala
Created June 21, 2017 16:50
Operation Based Commutative Replicated Data Type example
import cats.kernel.CommutativeMonoid
import org.specs2._
case class Operation(inc: Int, dec: Int, mul: Int) {
def apply(value: Int): Int = (value + inc - dec) * mul
}
def inc(value: Int): Operation = Operation(inc = value, dec = 0, mul = 1)
def dec(value: Int): Operation = Operation(inc = 0, dec = value, mul = 1)
def mul(value: Int): Operation = Operation(inc = 0, dec = 0, mul = value)
@Unisay
Unisay / Hole.hs
Last active May 25, 2017 08:30
Hole-driven development fixture
{-# LANGUAGE InstanceSigs, ScopedTypeVariables #-}
data Hole = Hole
hole = undefined