标签: evaluation

使用GHC API评估Haskell语句/表达式

对于我正在编写的工具(http://hackage.haskell.org/package/explore),我需要一种在运行时读取haskell函数定义的方法,将它们应用于我的工具中的值并检索其应用程序的结果.

任何人都可以使用GHC(6.10.4或6.12.1)API给我一个非常基本的例子吗?

要在运行时从文件中读取的示例函数定义:

f x = 10**(4/1102*x - 1)
Run Code Online (Sandbox Code Playgroud)

预期的计划产出

--mapM_ print $ map f [428, 410, 389]
3.577165388142748
3.077536885227335
2.5821307011665815
Run Code Online (Sandbox Code Playgroud)

!! UPDATE!
我发布了一个快速回答,但它在执行目录中创建了一个目标文件,任何提示都可以避免这种情况并避免使用所有文件IO.我还希望看到一个在内存中执行所有操作的版本:例如,用户在GUI中提供函数定义,编译/评估不会创建任何目标文件.

evaluation haskell runtime ghc ghc-api

19
推荐指数
2
解决办法
2682
查看次数

打印出Haskell的评估(重写)步骤,用于教育/学习目的.可能吗?

我通过使用书中的一个例子来描述这个问题.

在Simon Thompson的书"HASKELL函数式编程工艺"(第82页)(见下图)中显示了评估步骤fac 4.

题:

是否可以使用某些工具或一些"Haskell调试器"来写出GHCi在评估其价值时使用的评估步骤fac 4?

优选地,以人类可读的格式,用于教育和学习目的.

对每个评估步骤进行一些自动解释也是很好的,例如在重写步骤中使用了哪个等式.

我的主要目的是更深入地了解在运行简单的教育Haskell示例程序(如fac)时如何执行重写步骤.

有没有办法做到这一点 ?如果有,怎么样?

在此输入图像描述

在此输入图像描述

debugging evaluation haskell

19
推荐指数
2
解决办法
2023
查看次数

什么是需要的电话?

我想知道什么是需要的电话.

虽然我在维基百科搜索并在此处找到它:http://en.wikipedia.org/wiki/Evaluation_strategy,但无法正确理解.如果有人可以用一个例子来解释并指出与按值调用的差异,那将是一个很大的帮助.

evaluation programming-languages evaluation-strategy call-by-value call-by-need

18
推荐指数
2
解决办法
8401
查看次数

评估数学表达式的最佳和最短的方法

有许多算法来评估表达式,例如:

  1. 通过递归下降
  2. 调车场算法
  3. 反向波兰表示法

有没有办法用C#.net反射或其他现代.net技术评估任何数学表达式?

.net c# evaluation expression

17
推荐指数
2
解决办法
2万
查看次数

基于Apache Ofbiz提供解决方案需要多少努力?

我试图从文档中获取一些信息,但似乎它是那些你需要检查并使用它来解决问题的项目之一...

我注意到邮件列表中的高活动和很多提交,这是一个好兆头.但是当我查看代码库(btw 536MB大 - 不是一个好兆头)时,我没有找到太多的J2EE应用程序时尚.没有spring,ejb,奇怪的文件夹结构,相当多的非标准jar库.这就像开发人员不喜欢它所以他们以自己的方式做事:-)

我一直在使用一些类似的平台,主要是门户网站,例如Liferay很容易使用,因为它看起来像人们期望的那样.它基于Spring,它具有透明的服务和dao层,它具有简单的插件架构(plugin = WAR)等,是典型的J2EE开发.

我想知道开发人员在决定使用它之前应该注意哪些关键方面.由于它是非标准的J2EE应用程序,因此需要花费多少时间来了解它才能提高工作效率.

与OpenBravo等其他ERP系统相比,它有哪些(dis)优势.如果我主要需要Cart而不是ERP后端,我应该对OpenTaps感兴趣吗?

我也玩与阔叶商务部这是比较容易的方式开始.

首先十分感谢.

java evaluation erp ofbiz

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

按需要拨打电话按姓名拨打电话

我不明白Call-by-name和Call-by-need之间的差异.据我所知,Call-by-need方法恢复了返回的答案.但它如何帮助我们,结果之间是否存在根本差异?

例如,

begin integer n;
  procedure foo(e, n);
  integer e, n;
  begin
    for n := 1 step 1 until 10 do begin
      prints(`;;; the value of e is ');
      printnln(e)
    end
  end;
  foo(2 * n, n)
end
Run Code Online (Sandbox Code Playgroud)

因此,按照我的理解,在按名称呼叫时,我们将获得:

;;; the value of e is 2
;;; the value of e is 4
;;; the value of e is 8
Run Code Online (Sandbox Code Playgroud)

等等.这是因为我们通过2*n对e,并e与新的评估i每次.在需要召唤时会发生什么?

evaluation lazy-evaluation

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

在C中评估赋值运算符的左操作数有什么意义?

根据ISO C11 - 6.5.16.3,它说

  1. 赋值运算符将值存储在左操作数指定的对象中.赋值表达式在赋值后具有左操作数的值,但不是左值.赋值表达式的类型是左值操作数在左值转换后将具有的类型.在左右操作数的值计算之后,对更新左操作数的存储值的副作用进行排序.对操作数的评估是不确定的.

所以我想这意味着,例如,

int x = 10;
x = 5 + 10;
Run Code Online (Sandbox Code Playgroud)
  1. 左操作数x计算为10,右操作数计算为15.
  2. 右操作数值存储在左操作数指定的对象中x.

但是如果赋值的目的是存储右操作数的evalauted值(就像在step2中那样),为什么左操作数的评估是必要的?评估左操作数有什么意义?

c evaluation assignment-operator

17
推荐指数
2
解决办法
1171
查看次数

如何在Python中构建升力图(又名增益图表)?

我刚刚使用scikit-learn创建了一个模型,该模型估计了客户对某些优惠的响应可能性.现在我正在尝试评估我的模型.为此,我想绘制升力图.我理解lift的概念,但我很难理解如何在python中实际实现它.

python evaluation modeling machine-learning

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

空条件运算符和!=

通过在C#中引入Null-Conditional运算符,进行以下评估,

if (instance != null && instance.Val != 0)
Run Code Online (Sandbox Code Playgroud)

如果我这样改写,

if (instance?.Val != 0)  
Run Code Online (Sandbox Code Playgroud)

如果instance是null引用,它将被计算为true ; 它表现得像

if (instance == null || instance.Val != 0)
Run Code Online (Sandbox Code Playgroud)

那么使用这种新语法重写评估的正确方法是什么?

编辑:

instance是一个从JSON反序列化的大对象的字段.有很多这样的代码,首先检查字段是否在JSON中,如果是,检查Val属性是否不等于常量,只有两个条件都为真,做一些操作.

该代码本身可以被重构,使逻辑流程更加"决策意识"由彼得在他的评论中指出,虽然在这个问题上,我感兴趣的是如何使用null-conditional operators与!=.

c# null evaluation

17
推荐指数
2
解决办法
7375
查看次数

何时在clojure中使用`constant`,如何以及何时评估其参数?

在另一个问题的接受答案中,在运行时设置Clojure"常量",使用clojure函数constantly.

constantly看起来像这样的定义:

(defn constantly
  "Returns a function that takes any number of arguments and returns x."
  {:added "1.0"}
  [x] (fn [& args] x))
Run Code Online (Sandbox Code Playgroud)

文档字符串说明了它的作用但不是为什么会使用它.

在上一个问题中给出的答案中,常常使用如下:

(declare version)

(defn -main
  [& args]
 (alter-var-root #'version (constantly (-> ...)))
 (do-stuff))
Run Code Online (Sandbox Code Playgroud)

因此,不断返回的函数直接评估其结果.我很困惑这是如何有用的.我可能不理解如何x在"不断"包装中进行评估.

我什么时候应该使用constantly,为什么有必要?

evaluation clojure

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