问题标签 [lifting]
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.
scala - 这种提升功能有名称吗?
我写了一个Scala函数:
这种模式有名字吗?由于案例 1 和 2,它不是一个适用的函子。请随意使用 Haskell 或 Scala 代码回答。
scala - 对 Scala 中的“提升”功能感到困惑
在Scala 中的函数式编程一书中,有一个“提升”的例子,其中一个类型的函数A => B
被提升为Option[A] => Option[B]
.
这是电梯的实现方式:
我对此有一些困惑:
第一个是,这里的“_”是什么?其次,当我从 def 中删除返回类型时,期望类型推断发挥其魔力,我得到以下异常:
有人可以解释这里发生了什么吗?
谢谢
function - Scala 中的“提升”是什么?
有时当我阅读 Scala 生态系统中的文章时,我会阅读术语“提升”/“提升”。不幸的是,没有解释这究竟意味着什么。我做了一些研究,似乎提升与功能价值或类似的东西有关,但我无法找到以初学者友好的方式解释提升实际上是什么的文本。
名称中带有提升功能的Lift框架存在额外的混淆,但它无助于回答问题。
Scala 中的“提升”是什么?
monads - Monad 转换器 – 显式提升
我正在阅读Real World Haskell中的单子变换器。在下面的示例中,堆栈位于Writer
顶部State
的Reader
顶部IO
。
我(想我)了解我如何简单地调用ask
,get
并且put
由于这些是在 , 和类型类中定义的MonadReader
,MonadWriter
并且MonadState
存在诸如MonadWriter (StateT s m)
等等之类的实例。
我不明白的是为什么我不能lift
从下面的层到当前的 monad 转换器显式地执行一个动作。如果constrainedCount
我理解正确,我在 Reader monad 中,我认为两者都st <- get
应该st <- lift get
工作。(那tell
还有lift .lift .tell should be the same). If I change
st <- get to
st <- lift get`我得到了错误
这告诉我很少......我对此的理解完全错误吗?
haskell - 从新创建的 monad 执行 monadic 代码
我目前有两个共享相同类型的 monad,实现类似于State
monad:
它们之间的区别在于,第一个只允许读取上下文(bind 不会改变它),而第二个也允许编辑上下文。
然后有一些函数使用上下文FooRead
来计算一些值而不改变上下文的状态:
现在我想从 writer monad 的代码中执行这些读取函数之一:
whereliftVal :: FooRead a -> FooWrite a
是一个函数,它提取函数返回的值并将其FooRead
滚动到FooWrite
monad 中。这一切都很好。
但是,我想不出一种方法将getVal
上面的执行从我的FooWrite
monad 滚动到上下文中。通过上面的实现,getVal
将运行在一个空的 monad 实例中。
我可以弄清楚如何FooRead
使用FooWrite
上下文构造一个实例
本质上,我想将我的作者降级为读者,在阅读器中执行代码,然后将其重新提升为作者。
但不是如何在这个 monad 中实际执行代码?
haskell - 用于广义多参数函数提升的类型类技巧
我想将 Haskell 函数提升为高阶 lambda 演算编码。这几乎是从 Oleg 的 Typed Tagless Final encoding 中逐字记录的。
我可以将任意 Haskell 类型嵌入到Lam
using 中emb
,但那时我不能(^)
用于应用程序。此外,提升的功能会表现得很懒惰。相反,我必须逐个应用程序来提升它们。
不过,这是很多样板文件。我想创建一个适用于任何 arity 函数的通用提升函数。我觉得可以使用类似于Printf
'sPrintfType
或fixed-vector
'Cont
类型的东西。我可以使用类型函数指定我想要的内容
但是我通过这种方法非常卡住,通常是由于注入问题。我能够通过新类型包装器和作用域类型变量的真正可怕组合来解决注入性问题,但它从未真正进行过类型检查。
这可以用 Haskell 表达吗?
haskell - 提升为数据类型(Haskell)
给定一个函数 f,我如何编写一个将其提升为 PolyType 的函数?(只是想了解起重)
haskell - Pipes.Safe - 如何使用 mapM
我有以下带有管道的代码,没有第二个管道(>-> P.mapM ( fillMD5)
)就可以了。fillMD5
是一个操作a -> IO a
。
错误是:
我知道类型mapM
是
但我看不出这个怎么解除Safe.SafeT
?
scala - “电梯与地图几乎相同”是什么意思?
Leonardo Borges 写了一篇很棒的文章,名为“Functional Composition With Monads, Kleislis and Functors”。
他在其中评论道:
Mark 向我指出 lift 与 map 几乎相同,但参数相反。
这意味着:
可以重构为:
我的问题是,“电梯与地图几乎相同”是什么意思?
function - 在 Haskell 中用另一个函数作为参数提升一个函数
所以我在 Haskell 中有一个函数,为了问这个问题,我已经简化了它:
我希望将myFn
' 的依赖项helper
放入 aReader
中,因为控制反转允许我在测试中切换实现:
这很好用,除了我特别不喜欢这三行:
我觉得应该有一种方法来提升foldMap
,就像通过它的组合mapM
的提升版本一样。理想情况下,我希望将这三行合并为一行:map
sequence
假如说:helper'' :: Int -> MyReader (Set Int)
这当然需要具有foldMapM
类似于以下签名的函数:
我已经尝试了很多东西,但我似乎无法实现这个功能!任何人都可以帮忙吗?