小编Cha*_*ieP的帖子

在Haskell应用程序中创建Haskell REPL

我正在尝试在我的一个Haskell应用程序中嵌入一个Haskell REPL.我们的想法是,默认情况下只加载Haskell库的一个子集,加上我自己的一组函数,用户可以使用它们来与环境进行交互.

为了解决这个问题,我知道一种方法是创建一个(迷你)Haskell解析器+求值器并将我的mini-Haskell解析器的函数映射到实际的Haskell函数,但我确信有更好的方法来做到这一点.

有没有一种漂亮而干净的方法来使用Haskell为Haskell构建REPL?

parsing haskell read-eval-print-loop

20
推荐指数
1
解决办法
1972
查看次数

Haskell中的列表:数据类型还是抽象数据类型?

据我所知,Haskell中的列表类型是使用链表在内部实现的.但是,该语言的用户无法查看实现的详细信息,也无法修改组成链接列表的"链接"以允许其指向不同的内存地址.我想,这是内部完成的.

那么,如何在Haskell中限定列表类型?它是"数据类型"还是"抽象数据类型"?那个实现的链表类型是什么?

另外,由于Prelude提供的列表类型不是链表类型,如何实现基本链表功能?

举例来说,这段代码旨在在列表的索引n处添加元素a:

add [] acc _ _ = reverse acc
add (x:xs) acc 0 a = add xs (x:a:acc) (-1) a 
add (x:xs) acc n a = add xs (x:acc) (n-1) a
Run Code Online (Sandbox Code Playgroud)

使用"真实"链表,添加元素只需修改指向内存地址的指针.这在Haskell中是不可能的(或者是它?),因此问题是:我的实现是将一个元素添加到列表中最好的一个,或者我错过了一些东西(reverse我觉得,使用该函数特别难看,但是可以不做吗?)

如果我说的话有误,请不要犹豫,纠正我,谢谢你的时间.

haskell types linked-list list abstract-data-type

14
推荐指数
3
解决办法
2453
查看次数

在Menhir/Ocamlyacc中为运算符指定动态优先级和优先级

我正在尝试使用Menhir解析器(类似于Ocamlyacc)解析运算符具有动态属性(优先级和优先级)的语言.在lexing阶段,所有操作员都填充一个OP:string令牌(所以"+"变成(OP "+")等等).

运算符属性在解析时确定,并填充关联运算符及其属性的表.鉴于此表,我如何指示Menhir根据此表的数据动态更改解析运算符的规则的优先级?

谢谢,CharlieP.

parsing ocaml operator-precedence ocamlyacc menhir

6
推荐指数
1
解决办法
850
查看次数

Kafka 0.8中经纪人的分区重新平衡

Kafka 0.8的相对稀缺的文档没有提到平衡现有主题,分区和经纪人副本的预期行为.

更具体地说,经纪人到达时的预期行为和经纪人(领导者与否)的崩溃是什么?

谢谢.

apache-kafka

5
推荐指数
1
解决办法
1648
查看次数