- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要计算以下表达式的类型:
首先我有:
curry :: ((a, b) -> c) -> a -> b -> c
fst :: (d, e) -> d
{} | (a,b)-> c = (d,e) -> d
{} | (a,b) = (d,e) , c = d
c -> d | (a,b) = (d,e)
c -> d , a ->d | b = e
c -> d , a ->d, b -> e | {}
然后将结果替换为 a -> b -> c ,得到 d -> e -> d
现在我所做的与此类似:
foldr :: (f -> g -> g) -> g -> [f] -> g
const :: h -> i -> h
{} | (f -> g -> g) = h -> i -> h
{} | f = h , g = i, g = h
f -> h | g = i, g = h
f -> h, g -> i | i = h
f -> h, g -> i i->h | {}
然后将结果替换为 g -> [f] -> g ,得到 i -> [h] -> i
接下来我要做的(foldr const) 。 (curry fst)
但我不确定这些结果是否正确。无论如何我都尝试过但被卡住了。所以:
(foldr const) :: i -> [h] -> i and (curry fst) :: d -> e -> d
(.) :: (j -> k) -> (l -> j) -> l -> k
然后我开始:
d = (j -> k) -> (l -> j) -> l -> k, e = d -> e -> d
e = (j -> k) -> (l -> j) -> l -> k -> e -> (j -> k) -> (l -> j) -> l -> k
但感觉不对,我无法继续......我的前两个结果正确吗?如果是的话,我该如何解决最后一个问题?
最佳答案
第一个结果是正确的。
在最后一步进行替换之前,第二个结果的计算是正确的。很容易错过。您有(使用 =
,而不是 ->
,因为后者构造函数类型,因此可能会导致困惑)
f = h, g = i, i = h
因此替换 g -> [f] -> g
给出
h -> [h] -> h
不是i -> [h] -> i
,因为虽然g = i
,但i = h
也是如此,所以在一起,g = h
。也就是说,您需要任一来标准化您的替换(应用每个新解决方案来实例化旧的替换并扩展它,给出f = h, g = h, i = h
),或一次一步地仔细应用替换:
g -> [f] -> g
-- f = h
g -> [h] -> g
-- g = i
i -> [h] -> i
-- i = h
h -> [h] -> h
现在,对于计算的最后一步,您已经掌握了所有部分,但您错过了 .
是中缀运算符的方式。它的第一个参数是 foldr const
,它的类型必须是 j -> k
。它的第二个参数是 curry fst
,它的类型必须是 l -> j
。整个事情的类型是l -> k
。因此,您必须求解的方程是
j -> k = h -> [h] -> h -- from the first argument
l -> j = d -> e -> d -- from the second argument
现在,->
与右侧关联,因此第一个给出
j = h
k = [h] -> h
第二个给出
l = d
j = e -> d
将两者结合起来
h = e -> d
所以我们最终得到(标准化)
h = e -> d
j = e -> d
k = [e -> d] -> e -> d
l = d
并实例化l -> k
给出类型
d -> [e -> d] -> e -> d
该函数采用默认的d
,然后是函数列表,然后是输入e
:如果函数列表为空,则得到默认结果;如果列表非空,您将获得将第一个函数应用于输入的结果。
关于haskell - Haskell 多态性的计算类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44143471/
我来自 Asp.Net 世界,试图理解 Angular State 的含义。 什么是 Angular 状态?它类似于Asp.Net中的ascx组件吗?是子页面吗?它类似于工作流程状态吗? 我听到很多人
我一直在寻找 3 态拨动开关,但运气不佳。 基本上我需要一个具有以下状态的开关: |开 |不适用 |关 | slider 默认从中间开始,一旦用户向左或向右滑动,就无法回到N/A(未回答)状态。 有人
我是一名优秀的程序员,十分优秀!