最近Haskellのブログ活動に触発されて、HaskellでForthのようなDSLを書くのを手伝ってくれました。これは非常にうまく機能し、 {-# LANGUAGE TypeOperators, RankNTypes, ImpredicativeTypes #-}
-- a :~> b represents a "stack transformation"
-- from stack
ImpredicativeTypesで何ができるかを見ていて、正確に何ができるのか見たいと思っていました。 TypeClassesとのやりとりに関しては、私が気がついたことに遭遇したときには奇妙な振る舞いがあります。 :t mempty
mempty :: forall a. Monoid a => a
:t Right
Right :: forall a b. b -> Either a