相关疑难解决方法(0)

了解Haskell中的箭头

我一直试图控制箭头,因为它们是大多数FRP实施的基础.我想我理解了它的基本思想 - 它们与monad有关但在每个绑定操作符中存储静态信息,因此您可以遍历一系列箭头并查看静态信息,而无需评估整个箭头.

但是,在我们开始讨论第一,第二和交换时,我迷路了.2元组与箭头有什么关系?教程提供了元组的东西,好像它是明显的下一步,但我并没有真正看到连接.

就此而言,箭头语法直观地意味着什么?

haskell arrows

54
推荐指数
1
解决办法
5311
查看次数

哈斯克尔:我是否误解了如何使用箭头?

我写了一些玩具代码来玩Arrows的概念.我想看看我是否可以编写一个编码有状态函数概念的箭头 - 在不同的调用之后给出不同的值.

{-# LANGUAGE Arrows#-}
module StatefulFunc where

import Control.Category
import Control.Arrow

newtype StatefulFunc a b = SF { unSF :: a -> (StatefulFunc a b, b) }

idSF :: StatefulFunc a a
idSF = SF $ \a -> (idSF, a)

dotSF :: StatefulFunc b c -> StatefulFunc a b -> StatefulFunc a c
dotSF f g = SF $ \a -> 
    let (g', b) = unSF g a
        (f', c) = unSF f b
    in (dotSF f' g', …
Run Code Online (Sandbox Code Playgroud)

haskell arrows

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

无法将预期类型'a - > Int'与实际类型'IOArrow String Int'匹配

我试图理解箭头并创建以下示例:

{-# LANGUAGE Arrows #-}


module Main where

import Control.Arrow
import Control.Monad
import qualified Control.Category as Cat
import Data.List
import Data.Maybe

data IOArrow a b = IOArrow { runIOArrow :: a -> IO b }

instance Cat.Category IOArrow where
  id = IOArrow return
  IOArrow f . IOArrow g = IOArrow $ f <=< g

instance Arrow IOArrow where
  arr f = IOArrow $ return . f
  first (IOArrow f) = IOArrow $ \(a, c) -> do
    x <- f a …
Run Code Online (Sandbox Code Playgroud)

haskell arrows

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

它们只是函数的抽象

我正在阅读什么是箭头的帖子,我该如何使用它们?在第三个答案中,John Wiegley提到了以下内容:

它们只是函数的抽象.

这是什么意思?

haskell

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

标签 统计

haskell ×4

arrows ×3