小编xcv*_*vii的帖子

推断包含Haskell表达式的字符串的类型

我需要一种(快速和脏的)方法来获得一个以字符串形式给出的Haskell表达式的表示.

我目前看到3个选项:

  • 使用GHC API - 然而,文档很快就失去了我.
  • 使用其他类型的推理工具 - 我曾被建议尝试haskell-type-exts,但它无法输入除了最简单的表达式之外的所有内容.我不知道任何其他这样的工具.
  • 滚动我自己的HM推理员 - 除非绝对必要,否则我会避免这种情况

我甚至不需要一个完整的解决方案,因为可以输入一个合理的Haskell基本子集的库/工具就足够了.

那么实现这一目标的最简单方法是什么?

haskell type-inference hindley-milner ghc-api

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

递归嵌套模板 - gcc bug?

我有以下代码段.

template< typename T >
struct f
{
  template< typename V >
  struct a : f
  {};
};

int main ()
{
  f<int>::a<int>::a<double> x;
}
Run Code Online (Sandbox Code Playgroud)

它在GCC 4.4.5以及MSVC 2010上没有警告编译,但在GCC 4.5.2上没有 - 我得到以下错误:

test.cc: In function 'int main()':
test.cc:11:21: error: expected primary-expression before 'double'
test.cc:11:21: error: expected ';' before 'double'
Run Code Online (Sandbox Code Playgroud)

因此,虽然我没有看到任何关于它的非标准问题,但问题是强制性的 - 这在C++中是否合法?此外,如果是,我如何在GCC提交错误报告?(:

编辑:好奇的一点背景:

这应该是一块模板元编程.f基本上具有apply替换的模板元函数类的结构a(当然嵌套typeapply被省略,所以我们可以专注于结构本身).

在这种情况下,继承是用于绑定元函数返回值的标准设备.这个代码片段试图实现的是一个元函数类,在计算时递归地自我产生.

edit2:让我有点不同的相同片段:

template< typename T >
struct f
{
  template< typename V > struct a; …
Run Code Online (Sandbox Code Playgroud)

c++ gcc templates

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

具有"速度"和无限"循环"的QML动画

我正在尝试整理一个动画,我可以在其中指定速度(而不是持续时间),并且永远循环.我想出了两个不起作用的例子:

FirstTry.qml

import Qt 4.7

Rectangle {
  width: 100; height: 100
  Text {
    text: "hello"
    NumberAnimation on x {
      to: 50;
      loops: Animation.Infinite;
      duration: 50 * Math.abs(to - from)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

hello在屏幕上疯狂时得到以下运行时警告(足够公平).

QDeclarativeExpression: Expression "(function() { return 50 * Math.abs(to - from) })" depends on non-NOTIFYable properties: 
    QDeclarativeNumberAnimation::to
    QDeclarativeNumberAnimation::from
Run Code Online (Sandbox Code Playgroud)

SecondTry.qml

import Qt 4.7

Rectangle {
  width: 100; height: 100
  Text {
    text: "hello"
    SmoothedAnimation on x {
      to: 50;
      loops: Animation.Infinite;
      velocity: 50
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这更像是一种谜 …

qt qml qt-quick

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

Haskell表达式的Alpha转换

给定一个Haskell表达式,我想执行alpha转换,即.重命名一些非自由变量.

我已经开始实现我自己的函数了,它可以在haskell-src-exts Exp树上运行,但事实证明它非常重要,所以我不禁想知道 - 是否有一个易于使用的已建立的库这种源转换的解决方案?理想情况下,它应该与haskell-src-exts集成.

haskell lambda-calculus haskell-src-exts

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