• Haskell中的<*语法

    我得到以下代码 newtype Parser a = Parser { parse :: String -> Maybe (a,String) } instance Applicative Parser where pure a = Parser $ \s -> Just (a,s) f <*> a = Parser $ \s -> case parse f s of Just (g,s') -> parse (fmap g a) s' Nothi...
  • Haskell试图理解类型语法

    I am new to Haskell and I am trying to understand the syntax. I have data type Vec and it implements Show, Floating and Foldable. But the syntax is different for Foldable, why? data Vec a = Vec [a] instance Show a => Show (Vec a) where show (Vec x) = s...
  • 如何为所有Monoid编写长度函数

    我正在以不同的方式重写简单的函数,并且我显然误解了一些核心概念。有没有更好的方法来处理像这样的有限类型? mlength :: Monoid m => m -> Int mlength mempty = 0 mlength (l <> r) = mlength l + mlength r 编译失败,出现以下错误: Parse error in pattern: l <> r I can see that my usage of <> is misguided because there are mu...
  • Haskell的级联解析器

    newtype Parser a = Parser { parse :: String -> Maybe (a,String) } 我有2个解析器: 1) a=(satisfy isAlpha)that knows how to match the first alpha numeric character in a string.` 运行解析“ k345”得到“ Just('k',“ 345”)` 2)b =很多(满足isDigit),知道如何匹配任意数量的数字。运行解析b“ 1234 abc”`得...
  • Haskell基本循环内存泄漏

    在Haskell中,我使用一个永远调用自身的循环编写了一个基本计时器。我观察到它有一个很小的内存泄漏。永远调用自己的循环似乎是一个显而易见的问题,但是我没有其他实现方式: main :: IO () main = do now <- round . (* 1000) <$> getPOSIXTime loop now loop :: Int -> IO () loop checkPoint = do sleep sleep_time now <- round . (* 1000) <$> ...
  • 使用Eq类型测试空列表[]

    当前,我在Haskell中编写一个函数来检查列表是否对称。 isReflexive :: Eq a => [(a, a)] -> Bool isReflexive [] = True isReflexive xs = and [elem (x, x) xs | x <- [fst u | u <- xs] ++ [snd u | u <- xs]] test = do print(isReflexive []) main = test 该函数在不为空的列表上可以正常工作。但是,当我使用该功能...
  • 总结F#中任意级别的嵌套的列表

    I'm trying to create an F# function that will return the sum of a list of ints of arbitrary nestedness. Ie. it will work for a list<int>, a list<list<int>> and a list<list<list<list<list<list<int>>>>>>. 在Haskell中,我将编写如下内容: class HasSum a where getSum :...
  • Haskell中的串联以及与AList的混淆([a]-> [a])

    我有一个项目,正在提高Haskell中连接列表的速度。 我是Haskell的新手,对AList([a]-> [a])感到困惑,尤其是如何将AppendedList转换为常规List。任何帮助,将不胜感激。 newtype AppendedList a = AList ([a] -> [a]) -- List[5] is represented as AList (\x -> 5:x) -- This function takes an argument and returns the AppendedL...
  • 对纯净性的需求

    我正在学习Haskell的Applicatives。在我看来(我可能错了),实际上并不需要纯函数,例如: pure (+) <*> [1,2,3] <*> [3,4,5] 可以写成 (+) <$> [1,2,3] <*> [3,4,5] 有人可以解释纯函数通过fmap提供的显式映射所带来的好处吗?
  • Haskell中单个类型级别元组的类型级别列表

    使用DataKinds和TypeOperators,我可以创建类型的类型级别元组和类型的类型级别列表,但是我不能嵌套它们: > :k '['(Int, Int), '(Int, Int)] error: parse error on input ‘'’` 我可以列出多个元组: > :k ['(Int,Int),'(Int,Int)] ['(Int,Int),'(Int,Int)] :: [(*, *)] 但这不适用于只有一个元组给出的情况: :k ['(Int,Bool)] <interactive>:...
  • Haskell:获取调用者函数名称

    在Haskell中,是否可以获取调用方函数名称?当然,我可以对其进行硬编码,但这会带来维护负担:如果有人要重命名该函数,则没有什么迫使他们重命名硬编码的名称(尤其是使用批量查找/替换)。 一个人为的例子: f1 :: String f1 = "f1" -- can this be automated?
  • 为什么newtype语法创建函数

    我看一下这个声明: newtype Parser a = Parser { parse :: String -> Maybe (a,String) } 这是我的理解: 1)解析器被声明为带有类型参数a的类型 2) You can instantiate Parser by providing a parser function for example p = Parser (\s -> Nothing) What I observed is that suddenly I have a function...
  • 在同一应用程序中启动多个scotty服务器的最优雅方法是?

    是否有在同一应用程序中启动两个scotty服务器的标准方法?在一个玩具项目中,我正在尝试: main :: IO () main = do scotty 3000 $ do get "/" $ do text "hello" scotty 4000 $ do post "/" $ do text "world" 第一个服务器启动,但是第二个服务器不启动。我理解Haskell IO的方式也可能有缺陷。谢谢!
  • 模式匹配(可选空或适用纯)

    我知道可以像这样对(命名)构造函数进行模式匹配: f1 :: Maybe a -> Bool f1 Nothing = False f1 (Just x) = True -- in reality have something that uses x here f2 :: [a] -> Int f2 [] = False f2 x = True How can I write such a function for general Alternatives similar to f :: (Altern...
  • 为什么在Haskell中出现查找错误?

    我已经在Haskell中使用查找代码编写了以下代码: justCheck :: a -> b -> Environment -> Bool justCheck x y env = case lookup x env of Just a -> find y env Nothing -> error "Variable not found." 当我尝试运行代码时,在...
  • IO值转换为Haskell函数

    我目前有一个定义的函数: f :: [Int] -> Int -> [[Int]] 并且具有IO [Int]和IO Int类型的两个变量。我想将这些变量传递给此函数f。当仅将一个变量传递给函数时,我可以执行此操作,但是当它是2时,我无法使其正常工作。
公告

欢迎访问 码农俱乐部  点击这里设置您的邮箱  可以接收站内跟帖、回复邮件提醒,不错过任何一条消息。

关注公众号订阅更多技术干货! 码农俱乐部