首页 文章
  • 0 votes
     answers
     views

    我应该学习haskell来理解javascript的函数式编程部分吗? [关闭]

    我是一名具有非常强大的oop背景的开发人员 . 最近我想学习javascript因为我认为这是未来 . 但我发现自己很难理解javascript中概念的函数式编程部分 . 我四处搜索,在函数式编程世界中我得到了很多“Haskell”语言 . 很多人都说如果你想学习FP,你应该学习haskell . 如果有人可以提供一些意见或某人可以分享一些经验,我们将非常感激 .
  • 9 votes
     answers
     views

    模式匹配Haskell中的等效变量,就像在Prolog中一样

    在prolog中,我们可以执行以下操作: myFunction a (a:xs) = ... 这是,当 myFunction 的第一个参数与第二个参数中列表的第一个项相同时,此函数将计算为 ... . 我现在的问题是......如何在Haskell中完成类似的事情?我认为Prolog的模式匹配比Haskell更具表现力 . 我一直在尝试在Haskell中编写代码并且我遇到了麻烦 - 要么我使用...
  • 17 votes
     answers
     views

    Haskell模式匹配空集

    我正在将一些Haskell代码从使用列表更改为集合 . 我认为,我理解所需的一切,但我不确定如何在套装上进行模式匹配 . 列表有这个很好的文字语法,似乎很难用Set构造函数模拟 . 例如,我可能有一些像这样的代码: foo [] = [] foo x = other_thing 如何编写此代码,以便使用集而不是列表?
  • 1 votes
     answers
     views

    将Haskell GHCi输出重定向到文本文件[重复]

    可能重复:将Haskell GHCi命令结果输出到txt文件 我是Haskell的新手,我正在尝试将测试用例输出结果重定向到文本文件 . 它现在的设置方式是 AddAllTestCases.hs 包含我需要运行的所有测试用例,以便测试我创建的函数 . 我通过加载 AddAllTestCases.hs 在GHCi上运行测试用例,然后只需输入 main 并按Enter键 . 这导致测试用例输出结果...
  • 0 votes
     answers
     views

    Haskell getArgs更改数据类型

    我正在尝试为Haskell模块构建一个main函数,该模块将从用户处获取正则表达式并在SimplifyRegExp函数中使用它,但这需要RegExp类型的输入: data RegExp sy = Empty | Epsilon | L...
  • 2 votes
     answers
     views

    将Haskell代码转换为标准ML(重复组合)

    我正在编写一个代码,用于重复排列从k值中选择的n个元素 . 所以我得到的集合的基数应该有k ^ n个元素 . 在Haskell中,它相当容易 . 例如,人们可以写: import Control.Monad(replicateM)main = mapM_ print(replicateM 2 [1,2,3]) 然后你会得到一个列表: [1,1] [1,2] [1,3] [2,1] [2,2] ...
  • 3 votes
     answers
     views

    使用mueval评估沙箱的整个Haskell模块

    我正在尝试在tryhaskell.org和openjscad.org之间 Build 一个Web应用程序 . 用户可以为定义实体对象的模块输入Haskell代码,评估服务器端,并在浏览器中显示生成的对象 . 我已经实现了所需的CSG功能 . 我希望能够使用mueval安全地运行不受信任的Haskell,就像tryhaskell.org一样 . 我不知道如何使用mueval安全地运行Haskell代...
  • 4 votes
     answers
     views

    在列表中的每n个元素之后插入特定元素y

    我在书中遇到了问题,要求我定义一个函数插入,它带有一个正整数 n ,元素 y ,以及一个列表 xs ,它在列表中的每个 n 元素之后插入指定的元素 y . 我相信模式匹配可能是一个很好的方法,但我还没有真正掌握它的含义 insert :: Int -> Char -> [a] -> [a] insert 0 y xs = xs insert n y [] = [] insert...
  • 3 votes
     answers
     views

    我的第一个Haskell程序,我不错't understand what'

    我试图递归地实现 elem 函数 . 这就是我写的: member :: Eq a => a -> [a] -> Bool member _ [] = False member n (x:xs) | n == x = True : member (n xs) | otherwise = False main = do...
  • 1 votes
     answers
     views

    将值插入 Map 然后返回?

    我是一名Haskell新手试图解决有关不同数字的Collatz序列长度的问题 . 我希望用memoization编写一个函数,但是我被卡住了: -- map for memoization collLength:: Data.Map.Map Int Int collLength = Data.Map.fromList [(1,0)] -- collatz n returns the length...
  • 2 votes
     answers
     views

    Haskell - 函数'length'不适用于自定义数据类型

    我是Haskell的新手,我需要定义这种数据类型: data Restaurant = Restaurant [(String, String, Int)] deriving (Eq,Show) 这是餐厅员工的名单:(每个员工的姓名,地址,工资) . 现在,我正在尝试定义这个 numberOfEmployees 函数: numberOfEmployees :: Restaurant -> ...
  • -1 votes
     answers
     views

    Haskell:获得图像的大小

    我是Haskell的新手,并请我的一位教授做一些练习来帮助我学习 . 他给了我关于图像处理的东西 . 我在Haskell中使用字符串创建了几个图像,例如 pic :: Int -> Pic pic 1 = [" #### ", " ## ## ", " #### "] 我想获得...
  • 12 votes
     answers
     views

    我如何使用Haskell库函数?

    我是一个Haskell新手,试图完成一个Caesar密码练习 . 在 .hs 文件中,我定义了以下函数: let2int :: Char -> Int let2int c = ord c - ord 'a' 然后我尝试通过键入 :l caeser.hs 将其加载到GHCi中,我收到以下错误消息: [1 of 1] Compiling Main ( caeser.hs...
  • 10 votes
     answers
     views

    Haskell:只能通过:load一次加载一个文件

    假设我有两个模块NecessaryModule1和NecessaryModule2(如Haskell : loading ALL files in current directory path中所述 . 那么我在WinGHCi和GHCi中都注意到,如果我这样做: > :load NecessaryModule1 [1 of 1] Compiling NecessaryModule1 ( Ne...
  • 3 votes
     answers
     views

    如何处理像Yesod这样的Haskell框架中的类型

    我对Haskell相对较新,并试图通过使用Yesod框架构建网站来获得一些经验 . 我现在面临的最大的困难是我经常不确定一个函数需要什么类型或者另一个函数返回什么类型 . 我也无法解释出错时产生的类型错误 . 特别是,我希望能够做到以下几点,但我目前还不知道如何做到这一点 . 给出一个表达式,找出表达式的类型 . 通常我会使用GHCi这样的东西,但据我所知,如果我想这样做,我需要知道表达式的每...
  • 3 votes
     answers
     views

    Haskell中的数据类型设计

    学习Haskell,我写了一个C头文件的格式化程序 . 首先,我将所有类成员解析为a-collection-of-class-members,然后将其传递给格式化例程 . 代表我有的 class 成员 data ClassMember = CmTypedef Typedef | CmMethod Method | CmOp...
  • 0 votes
     answers
     views

    简单的Haskell平均函数无法匹配类型错误

    我见过的所有其他平均问题都比我需要的要复杂得多 . 我是Haskell的新手,我目前正在通过The Craft of Functional Programming 2nd Edition . 在第3章中,练习编写一个简单函数来平均3个整数 . 提供了函数类型签名,我在我的解决方案中使用它 . 我写: averageThree :: Int -> Int -> Int -> Flo...
  • 4 votes
     answers
     views

    在Haskell中,如何获取数据结构的可用函数列表? [重复]

    这个问题在这里已有答案: Is there a way to see the list of functions in a module, in GHCI? 2个答案 我知道我来自Python的Haskell,我使用HXT来解析XML文件,并且我可以在结果数据结构上使用一些函数 NTree ,就像函数 getChildren 一样,我怎么会这样做从ghci那里得到一份清单?在Python中,我...
  • 6 votes
     answers
     views

    ghci显示执行堆栈

    所以我正在完成Real World Haskell的一些初步章节练习,我想知道GHCi中是否有一个选项可以让它在每次递归调用时显示带参数的函数评估 . 所以例如我写了一个简单版本的'map',当我应用它时,我希望GHCi用实际参数显示每个递归调用(希望表达式结果) . 能让我跟踪幕后发生的事情 . 附:当我写这篇文章时,我感觉它可能受到哈斯克尔执行模型的懒惰的限制,如果我错了,请纠正我 .
  • 10 votes
     answers
     views

    使用GHCi测试FFI代码(带有“外部导入”)

    每个人都很好(你当地时间) . 我在外部函数接口上经历了Real World Haskell's chapter,并做了一些后续阅读here . 我想对某些事情做一些澄清 . 以下是相当清楚的: foreign import ccall unsafe "math.h sin" c_sin :: CDouble -> CDouble 我可以加载这个和在ghci中使用它的代...
  • 4 votes
     answers
     views

    如何查询统一类型为ghci?

    可以查询ghci的统一类型吗? 例如,如果我想知道 (Int -> Bool) 和 (a -> Bool) 之间的统一类型,我该如何查询到ghci? 我想要解决的是从第三版Haskell: The Craft of Functional Programming开始练习13.23 . 如何使用Haskell系统检查两个类型表达式是否统一,如果是这样,它们的统一是什么?提示:您可以在Ha...
  • 6 votes
     answers
     views

    不明确的类型变量,但不是在ghci?

    任何人都可以解释为什么haskell在以下示例中强制执行显式类型签名以及如何修改它以避免需要显式声明? import qualified Data.List as L main = do print $ length $ L.nub [1,1,2,3] -- 3, passed (Eq a, Num a) => [a] print $ length $ L.nub [] ...
  • 1 votes
     answers
     views

    Haskell数据声明

    以下代码来自Hutton的Haskell编程(第101页) . data Shape = Circle Float | Rect Float Float square :: Float -> Shape square n = Rect n n area : Shape -> Float area(Rect x y) = x * y 在ghci中,如果我输入区域(Rect 3 5)...
  • 1 votes
     answers
     views

    编译与解释:让或不让

    为什么Haskell解释器(GHCI 7.10.3)需要函数定义在let表达式中,但如果函数定义在let表达式中,Haskell编译器(GHC 7.10.3)会抛出解析器错误? 我正在通过“Learn You a Haskell for Great Good!”宝贝的第一个功能是doubleMe:doubleMe x = x x 为什么解释器接受这个定义,如果它在let表达式中,否则在输入'='上...
  • 3 votes
     answers
     views

    Haskells背后的基本原理`succ`数字(浮点数)

    我有点惊讶地发现Haskell在数字上将 succ 函数定义为添加一个: succ :: a - > a值的继承者 . 对于数字类型,succ添加1 . 虽然对于整数值,这似乎是合理的,但有一些问题: 如果定义一个只能表示偶数/奇数/素数/ ...数字的数字系统,换句话说,一个专用类型是整数的子集,该怎么办? 如果你定义某种代表半数和全数的"fixed-point n...
  • 3 votes
     answers
     views

    在HLists中修复类型推断

    我've been trying to get the some code to compile. It' s意味着采取 HList ,提取出字符串并将它们连接在一起 . {-# LANGUAGE RankNTypes #-} {-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeSynonymInstances #-} {-# LANGUAGE Flexible...
  • 2 votes
     answers
     views

    Haskell:使用foldr定义产品

    我正在尝试使用 foldr 定义 product : 我可以这样做: new_product xs = foldr (*) 1 xs 但不是: new_product = foldr (*) 1 要么: new_product = \xs -> foldr (*) 1 xs 两个定义都产生相同的错误: 使用'folder'时没有(Foldable t0)的实例类型变量't0'是不明确的相关...
  • 4 votes
     answers
     views

    如何设置两个参数的递归函数的初始条件(Haskell)[重复]

    这个问题在这里已有答案: Pattern matching equality on tuples in Haskell 2个答案 我正在努力学习一下Haskell For Great Good,并试图解决递归章节中的一些示例问题 . 我正在尝试编写一个带有下限“a”和上限“b”的函数,并返回两者之间所有数字的总和 . 我最初尝试(我认为是)一种直接的方法 sumInts :: Int -&gt...
  • 10 votes
     answers
     views

    关于Haskell性能的推理

    以下两个用于计算Fibonacci序列第n项的Haskell程序具有非常不同的性能特征: fib1 n = case n of 0 -> 1 1 -> 1 x -> (fib1 (x-1)) + (fib1 (x-2)) fib2 n = fibArr !! n where fibArr = 1:1:[a + b | (a, b) <- z...
  • 0 votes
     answers
     views

    使用递归类型在Haskell中编码动态类型的lambda演算

    我正在阅读皮尔斯的类型和编程语言一书,在关于递归类型的章节中,他提到它们可以用于用类型语言编码动态lambda演算 . 作为练习,我正在尝试在Haskell中编写该编码,但我无法通过typechecker: {-# LANGUAGE RankNTypes, ScopedTypeVariables #-} data D = D (forall x . x -> x ) lam :: (D ...

热门问题