小编rem*_*rem的帖子

BangPatterns出现在哪里?

GHC用户指南,好像最Pat可能PBangPat,但也有一些例外.例如,模块中的顶级刘海(例如!main)是不允许的,并且x : !xs无法解析 x : (!xs) parses感谢@chi.关于可以添加刘海的正式规范是什么?我查看了用户指南和报告的一些章节但没有发现任何内容.

haskell ghc strictness

11
推荐指数
1
解决办法
336
查看次数

使用严格注释将GHC引入无限循环

出于某种原因,我需要欺骗Haskell执行一个无限循环,而不是仅仅检测它并退出<<loop>>,但它太聪明了.是否有任何方便的例子,其中循环是由严格注释(!)引起的,还是我可以关闭循环检测?目前我在做

x = x + y
y = x + y
inf !n = 0

main = do
    print $ inf x
Run Code Online (Sandbox Code Playgroud)

haskell

4
推荐指数
2
解决办法
205
查看次数

数据类型Nt = int | ML中的字符串

当我只有datatype Nt = int | string,sml不抱怨.但是当我也有val n = 6 : Nt,ml不接受6作为Nt.为什么是这样?我知道,通常应该有数据之前建设者intstring,但在这里我具有定义,可以采取两种功能intstring.

ml sml

3
推荐指数
2
解决办法
967
查看次数

用于测试优化器的源数据库

我需要在源代码集合上测试我的haskell优化器,我现在正在尝试在标记为programhackage 的包上运行优化器.然而,编译它们(依赖项)并让它们运行(输入)是一件痛苦的事情.

是否有包含易于构建和运行的程序的源代码数据库?如果他们有一些使用严格注释来提高性能的代码会更好(因为这是我的优化器所做的).

haskell hackage

2
推荐指数
1
解决办法
33
查看次数

在模块中计算`Pat`s

我需要计算Pat一个haskell 的数量Module.我知道最简单的方法是在AST的每个级别上进行模式匹配,这将产生一个看起来像整个AST的巨大功能.我相信有一些方法可以利用像类似的类Functor或者State Monad依靠一些现有的函数来遍历树(如prettyPrint)和跟踪计数器,但我不确定它是如何工作的.

haskell uniplate

2
推荐指数
1
解决办法
58
查看次数

解析包含#(c预处理器)的haskell源文件时出错

解析包含#define和的haskell源文件时#if,parseFileContentsWithMode会混淆并抛出有关散列的错误.我想包括MagicHashCPP扩展名列表(extns见下文),但没有奏效.我无法真正更改源文件,因为它们有很多.

getModule extns filePath program = fromParseResult $ parseFileContentsWithMode mode program
                         where
                                  bangPatternsExt = map parseExtension extns
                                  mode = ParseMode filePath Haskell2010 bangPatternsExt False False 
Run Code Online (Sandbox Code Playgroud)

解析器失败了:

#if __GLASGOW_HASKELL__ >= 612

instance Lift ModName where
  lift = lift . modString
Run Code Online (Sandbox Code Playgroud)

preprocessor haskell

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

标签 统计

haskell ×5

ghc ×1

hackage ×1

ml ×1

preprocessor ×1

sml ×1

strictness ×1

uniplate ×1