ale*_*tor 6 haskell dependent-type type-level-computation
由于我的邪恶和大多数不可理解的原因,我决定想要一个类型级别函数来指示类型的类型类实例的存在.它会像这样工作:
> :kind! HasClass Show Int
> 'True
> :kind! HasClass Monoid Int
> 'False
Run Code Online (Sandbox Code Playgroud)
鉴于最近在GHC中添加了约束类型等,我觉得这可能是可能的,但是没有考虑到整洁的实现.可以吗?
为什么不只是这个呢?
\n\nclass HasClass (c :: * -> Constraint) a where\n type Has c a :: Bool\n\ninstance HasClass c a where\n type Has c a = 'False\n\ninstance (c a) => HasClass c a where\n type Has c a = 'True\n
Run Code Online (Sandbox Code Playgroud)\n\n假设您不介意一些扩展:
\n\n{-# LANGUAGE ConstraintKinds #-}\n{-# LANGUAGE DataKinds #-}\n{-# LANGUAGE FlexibleInstances #-}\n{-# LANGUAGE KindSignatures #-}\n{-# LANGUAGE MultiParamTypeClasses #-}\n{-# LANGUAGE TypeFamilies #-}\n{-# LANGUAGE UndecidableInstances #-}\n
Run Code Online (Sandbox Code Playgroud)\n
归档时间: |
|
查看次数: |
183 次 |
最近记录: |