Skip to content

Instantly share code, notes, and snippets.

View zliu41's full-sized avatar
๐Ÿ—
Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ

Ziyang Liu zliu41

๐Ÿ—
Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ(Fix(Succ
View GitHub Profile
@zliu41
zliu41 / FixViaHFix.hs
Created September 23, 2022 23:41
Define Fix via HFix
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE StandaloneKindSignatures #-}
{-# LANGUAGE TypeFamilies #-}
module FixViaHFix where
import Data.Functor.Identity
import Data.Kind
@zliu41
zliu41 / RecursionScheme.scala
Last active March 1, 2023 16:05
Factorial computation with recursion schemes in Scala
import cats.Functor
import cats.implicits._
import scala.language.higherKinds
sealed trait StackR
final case class DoneR(result: Int = 1) extends StackR
final case class MoreR(acc: StackR, next: Int) extends StackR
sealed trait Stack[A]
@zliu41
zliu41 / ArrowHangman.scala
Created August 7, 2017 20:11
A Scala implementation of Hangman based on Scalaz's Arrow type class
import scala.language.higherKinds
import scala.util.Random
import scalaz.Scalaz._
import scalaz._
import Circuit.arrowInstance
/////////////////////////////////////////////////////////////////////////////////////////
// This implementation closely follows the Haskell implementation in the Haskell Wikibook
// (https://en.wikibooks.org/wiki/Haskell/Arrow_tutorial).