问题标签 [anamorphism]

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 投票
1 回答
1389 浏览

c# - 什么是变形,在 C# 中看起来如何?

我正试图围绕变形的概念。

在函数式编程中,变形是对列表展开概念的概括。形式上,变形是通用函数,可以核心递归地构造某种类型的结果,并由确定下一个构造步骤的函数参数化。


它的双重性,catamorphism,在这篇文章中有很好的描述:什么是 catamorphism,它可以在 C# 3.0 中实现吗?.

C# 中多变行为的一个很好的例子是 LINQ 的Aggregate方法。


什么是变形等价物?将伪随机数生成器Random视为变形构造是否正确,或者展开过程是否应该始终包含如下所示的累加器函数(取自Intro to Rx的代码片段)?

0 投票
0 回答
598 浏览

haskell - Haskell - 将玫瑰树的深度优先遍历表示为展开的实例,以代数方式推导它

假设我们定义了一个玫瑰树,以及数据类型上的相应折叠。

这种结构的深度优先遍历的递归定义将是:

我们可以将 dft 表示为 Rose Trees 上的折叠,特别是我们可以通过代数推导出这样的折叠。

我想我们可以这样做的原因是因为 foldRTree 捕获了 RTrees 上的一般递归结构,这让我想到了关于展开的查询。

我们将展开定义如下:

我们可以将深度优先遍历表示为展开如下:

我正在努力寻找一种方法来开发一种以与 cons 相同的方式代数计算函数 nht 的方法。特别是在开发展开过程中有一个巧妙的步骤,即意识到展开的最终参数需要是 [RTree a] 类型,而不仅仅是 RTree a。因此,对 dft 提出的论点并没有直接传递给展开,因此我们在推理这两个函数时遇到了障碍。

我将非常感谢任何能够提供一种数学方法来推理展开的人,这种方式可以计算所需的函数 nh 和 t 在将递归函数(自然是折叠)表示为展开(可能使用一些定律)时连接折叠和展开?)。一个自然的问题是我们必须用什么方法来证明这种关系是正确的。

0 投票
1 回答
116 浏览

haskell - 重复作为一个类同态

所以我一直在尝试将这个检查列表是否没有任何重复的 Haskell 函数转换为 Hylomorphism,但它有些奇怪。

如果有人可以提供帮助,我会很高兴!谢谢

0 投票
1 回答
458 浏览

python - Python中的变形

我尝试按照此链接对图像进行变形

https://github.com/aydal/Cylinderical-Anamorphosis/blob/master/anamorph.py

它给出了一个变形的图像,但它给出了半圆形的图像。但我想要一个完整的圆圈大小的输出。我试过了

代替warp[c-j, i-1] = img[p-1, q-1]

但它不会在整个圆圈中给出一张图像,而是两次创建相同的输出!

谁能帮帮我吗。

完整代码:

原始图像在此处输入图像描述

我的输出图像(半圈)在此处输入图像描述

所需的输出图像在此处输入图像描述

0 投票
2 回答
209 浏览

haskell - 来自 Int -> Int 的递归方案?

文件夹身份是

更一般地说,使用折叠,您可以破坏结构并最终得到一个汇总值,或者以这样一种方式注入结构,最终得到相同的输出结构。

[Int] -> [Int][Int] -> Int[Int] -> ?

我想知道展开器/l 是否有类似的身份。

我知道如何获得

Int -> [Int]

与展开/安娜。

我正在寻找某种方式

Int -> Int

使用递归方案。

0 投票
0 回答
941 浏览

php - anam/phantommagick - 服务器 Oracle Linux Server 7.6 中不存在二进制文件

我正在使用 laravel 项目,我使用 anam/phantommagick 包将视图页面转换为图像,在此处输入链接描述。它在我的本地系统(Ubuntu 16.04.6 LTS)中运行良好。但是移动服务器它不起作用。

我得到以下错误 在此处输入图像描述

我添加了phantomjs-linux-x86-binary Dependencies 。

0 投票
1 回答
83 浏览

swift - 快速序列变形

Swift 的标准库是否包含a或类似内容的列表变形Sequence

列表或序列上的 Anamorphism 与reduce函数相反。因此,它不会将序列折叠为单个值,而是构建一个序列。

reduce接受一个初始值,以及一个用于将序列元素与 this 组合的函数,并返回一个最终值。它的签名看起来像这样(为可读性添加了换行符):

序列的变形可能是这样的:

通过给它一些初始状态,并告诉它如何把它变成一个元素和下一个状态,它可以为你建立一个序列。所以,我可以得到一个像这样的数组Array(1..<10)

0 投票
1 回答
148 浏览

parsing - 具有变形的 Haskell monadic 解析器

我的问题是如何将递归的 F 代数风格的递归类型定义与单子/应用风格的解析器结合起来,以适应现实的编程语言。

我刚刚从以下Expr定义开始:

我正在尝试将它与使用变形的解析器结合起来:

据我所知,在我的示例中,psi应该只解析一个整数,或者它应该确定字符串是 a<expr> + <expr>然后(通过递归调用fmap (ana psi)),它应该解析左侧和右侧表达式.

但是,(monadic/applicative)解析器不是这样工作的:

  • 他们首先尝试解析左边的表达式,
  • +, _
  • 和右手表达式

我看到的一种解决方案是更改 to 的类型定义,Plus a a以便Plus Integer a它反映解析过程,但这似乎不是最好的途径。

欢迎任何建议(或阅读指导)!