Types Elm中的依赖类型

Types Elm中的依赖类型,types,elm,dependent-type,idris,Types,Elm,Dependent Type,Idris,我想知道是否有可能在Elm中像在Idris中一样执行以下依赖类型的输入: isQuestion : String -> Type isQuestion (sentence) with (endsWith "?" sentence) | True = Question | False = Statement 有没有一个库可以让我通过打字达到类似的效果 您可以对联合类型执行类似的操作 type Sentence = Question String | Sta

我想知道是否有可能在Elm中像在Idris中一样执行以下依赖类型的输入:

isQuestion : String -> Type
isQuestion (sentence) with (endsWith "?" sentence)
    | True = Question
    | False = Statement

有没有一个库可以让我通过打字达到类似的效果

您可以对联合类型执行类似的操作

type Sentence 
    = Question String
    | Statement String

isQuestion : String -> Sentence
isQuestion sentence =
    case endsWith "?" sentence of
        True -> Question sentence
        False -> Statement sentence

这不是依赖类型。这只是一个很好的旧ADT(代数数据类型)。另一个问题:作者真的需要函数中的依赖类型吗?可能不会,而且您的解决方案非常好。对,这个示例太简单了,无法显示依赖类型的需要。但是我想使用与许多不同的依赖类型的类型匹配来创建类型流逻辑,这使得对代码进行推理更加容易。例如,在普通英语中,问题被定义为以问号结尾的语句。这不可能是别的。我可以将其扩展到更多的定义,例如感叹语句是以感叹号结尾的语句,等等。我只是想简明扼要。我很高兴能够用于这种情况,但是带有私有构造函数的联合类型非常有效。一般来说,不,可能有一些特殊情况下可以伪造它,但这并不是Elm near的设计目标