如何在 Haskell 中使用 GADT 更改类型

问题描述

按照https://stackoverflow.com/a/26084087/8142021中的答案 我使用以下 haskell 代码来定义带有 GADT 的模态逻辑。

data Plain
data Mod
data Formula t where
   Prop :: {propName :: String} -> Formula t
   Neg  :: Formula t -> Formula t
   Conj :: Formula t -> Formula t -> Formula t
   disj :: Formula t -> Formula t -> Formula t
   Impl :: Formula t -> Formula t -> Formula t
   BiImpl :: Formula t -> Formula t -> Formula t
   MyModality :: Formula Mod -> Formula Mod 

type PlainFormula = Formula Plain
type ModalFormula = Formula Mod

有没有办法将 PlainFormula 的类型更改为 ModalFormula?由于PlainFormula 是Modal Formula 的一个子集,我尝试定义以下注入但它不起作用。

toModal :: PlainFormula -> ModalFormula
toModal f = f

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)