haskell - 如何在 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
解决方案
推荐阅读
- python - Python Regex - 如何考虑行尾和文件尾并仅打印字符串的子部分?
- php - 仅在具有 Elementor 的小部件上隐藏缺货的 WooCommerce 产品
- python - 如何解决 Dlib Visual Studios C++ 错误?
- asp.net-mvc - 看起来您没有安装任何 APM 服务。让我们添加一些
- node.js - 最佳方式:如何将 dynamodb 表导出到 csv 并将其存储在 s3
- c - Add() method won't return correct result
- c++ - 如何在 C++ 中输入 std::string_view?
- postgresql - 使用 TIMESTAMP 创建插入函数
- java - 你如何格式化数组来保存对象?
- javascript - Vue.js 中的静态道具验证