问题标签 [curry]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
24 浏览

curry - 在 Curry 中,我可以将函数标记为故意非确定性吗?

我正在运行 PAKCS Curry 编译器,版本 3.3.0。

考虑这个取自 Curry 教程的非确定性函数:

当我编译它时,我看到了这个警告:

如果我错误地编写了一个非确定性函数,警告可能会有所帮助。另一方面,如果我故意编写了一个非确定性函数,那么警告就会很烦人,如果我编写一个包含许多此类函数的大型程序,那么我最终可能会收到很多警告。

有什么方法可以将函数标记为故意不确定的,所以警告会消失吗?

我在 PAKCS 手册中看到我可以通过以下方式关闭所有此类警告

但这似乎不是一个好主意,因为如果我偶然编写了一个非确定性函数,这个警告似乎很有用。

0 投票
1 回答
35 浏览

curry - I can't use fromInteger or realtoFrac in curry

I'm using an old version of curry and all functions of Haskell works fine so far, but I have problem with realtoFrac and fromInteger

I think that this can happen because is an old version, so, in old versions of curry how can I use realtoFrac or fromInteger?

Thanks in advance and apologies for my bad English

0 投票
0 回答
20 浏览

curry - 咖喱中的 Pow 函数

我正在使用咖喱,我正在使用 pakcs 2.2.1,如果我写 2^2

我收到这个错误

如果我使用最新版本的 pakcs (3.3.0) 我没有这个问题,不幸的是,我只能使用 2.2.1 版本。

你知道我是否需要加载一个模块或者我该如何做这个操作?

(2*2 不是一个选项,因为我需要处理非常大的数字)

提前致谢

0 投票
1 回答
84 浏览

performance - 如何将 Prolog 的剪辑转换为 Curry?

这是 Curry 中的一种算法,它在彼此n编辑距离内获取并匹配两个字符串。n

这修改了朴素的递归算法,以便我们限制我们可以尝试的编辑次数。一旦我们尝试n编辑,我们就会放弃。

如果我们把它翻译成 Prolog 我们得到

虽然这些确实限制了他们可以尝试的编辑次数,但分支因子没有限制。因此,它具有相对于输入大小的指数运行时间。在 Prolog 中,我可以通过以下方式解决这个问题:

现在分支因子被限制,这在线性时间内运行。但是我不能对库里做出同样的改变,因为库里没有削减。

什么是惯用的 Curry 实现方式?

0 投票
2 回答
116 浏览

haskell - Haskell 嵌套函数顺序

我正在尝试在 Haskell 中编写一个函数来生成多维列表。

(从技术上讲,我使用的是 Curry,但我的理解是它主要是 Haskell 的超集,而我正在尝试做的事情对 Haskell 来说也很常见。)

经过一番挠头后,我意识到我最初想要的函数(m_array generating_function list_of_dimensions,给一个嵌套深度等于的列表length list_of_dimensions)可能与它们的类型系统本身不一致,因为(AFAICT)列表的嵌套深度是它的一部分类型,我的函数想要返回嵌套深度根据参数值而不同的值,这意味着它想要返回类型根据值而变化的Haskell 不支持 (AFAICT) 的参数。(如果我错了,这可以做到,请告诉我。)此时我转到下一段,但如果有一个我错过的解决方法,它采用非常相似的参数并且仍然输出一个嵌套列表,让我知道。就像,也许如果您可以将索引编码为某种数据类型,该数据类型在其类型中隐含包含嵌套级别,并用 eg 实例化dimensions 5 2 6 ...,那可能可行吗?没有把握。

无论如何,我认为也许我可以通过嵌套函数本身来编码嵌套深度,同时仍然保持参数可管理。这确实有效,我最终得到以下结果:

但是,到目前为止,使用起来还是有点笨拙:您需要嵌套调用,例如

(顺便说一句,它给出了[[[0,0],[0,0]],[[0,0],[0,0]]]。如果你使用(\_ i -> i),它会用相应元素的索引填充数组,这是我想保持可用的结果,但可能是一个令人困惑的例子。)

我宁愿尽量减少必要的样板文件。如果我不能打电话

我希望能够打电话,最坏的情况,

但如果我尝试这样做,我会得到错误。据推测,参数列表的划分方式对函数没有意义。我花了大约半个小时的谷歌搜索和实验,试图找出 Haskell 解析此类函数字符串的机制,但我还没有找到明确的解释,理解也难以理解。所以,正式的问题:

  1. Haskell 如何解析 eg f1 f2 f3 x y z?参数是如何分配的?它是依赖于函数的签名,还是只是尝试f1使用 5 个参数调用?
  2. 有没有一种重组ma方法允许在没有括号的情况下调用它?(最多允许添加两个辅助函数,例如maStart ma ma maStop (\_ i -> i) [1,2,3,4] [],如有必要。)
0 投票
1 回答
29 浏览

javascript - 这是编写咖喱函数的正确递归方式吗?

我不明白这个递归咖喱函数是否正确。

我有 curry 函数实现与绑定,但我不知道为什么它工作和递归没有。你能帮我理解一下吗,我认为我在这个函数中的上下文理解是不正确的

0 投票
0 回答
27 浏览

prolog - 从 (SWI) Prolog 调用 Curry (PAKCS)

我无法找到任何现有的文档或提及从诸如 SWI Prolog 之类的 Prolog 系统调用 Curry 程序的编译输出(当使用 PAKCS 编译时,显然不是 KICS)。鉴于 PAKCS 的编译输出保持或可以保持 Curry 源代码中函数/谓词的原始名称,应该是可能的。

以前有没有人尝试过这样的事情并可以提供一些指示?

或者换句话说,如何将 Curry 程序编译成可重用的库,不仅可以从其他 Curry 程序调用,还可以从 Prolog 程序调用。

0 投票
0 回答
29 浏览

typescript - 使用 Typescript 和 ramda 的 Curried 函数似乎不是类型安全的

我有一个功能:

我使用 ramda 0.27.1 部分调用它:

但后来我错过了一些类型安全:

我不希望它编译,因为myFunction不能只用两个 args 调用: