我遇到了我必须为自己的haskell项目做的任务。 我有一个.txt文件,其结构如下所示:
types{
type1
type2
}
type1{
sub11
sub12
}
type2{
sub21
sub22
}
generate{
type1->type2
type2->type1
}
现在,我需要在每个" {"并使它们成为数据类型。 所以,在这种情况下:
Data Types = Type1 | Type2
Data Type1 = Sub11 | Sub12
Data Type2 = Sub21 | Sub22
在最后一对括号之间" {}"定义了这样的函数:
blob::Type1 -> Type2 -> String
bar :: Type2 -> Type1 -> String
blob和bar函数必须采用Type1和Type2的所有可能的子类型并构建笛卡尔积。 因此,在这种情况下,blob的结果将是:(sub11,sub21),(sub11,sub22),(sub12,sub21),(sub12,sub22)
我知道如何使用readFile函数读取haskell中的文件,该函数将文件内容作为字符串返回。我不知道的是如何从文本文件中解析文本并以动态方式定义类型和函数。