purescript-0.12.0: tests/purs/passing/LiberalTypeSynonyms.purs
module Main where
import Prelude
import Effect.Console (log)
type Reader = (->) String
foo :: Reader String
foo s = s
type AndFoo r = (foo :: String | r)
getFoo :: forall r. Prim.Record (AndFoo r) -> String
getFoo o = o.foo
type F r = { | r } -> { | r }
f :: (forall r. F r) -> String
f g = case g { x: "Hello" } of
{ x: x } -> x
main = log "Done"