在 haskell 的新函数中使用过滤列表

2023-12-07

所以我不太确定如何正确表达这一点,但是假设我想获得列表中所有奇数的总和,我是否有两个函数(sumList 和 getOddNumbers)并将它们组合到 sumOddList 中,或者有没有办法将这两个放在一个函数中?如果没有更好的函数,我该如何将它们组合到 sumOddList 中?

getOddNumbers :: [Integer] -> [Integer]
getOddNumbers [] = []
getOddNumbers (x:xs)
    |odd x = x:getOddNumbers xs
    |otherwise = getOddNumbers xs

sumList :: [Integer] -> Integer
sumList list = case list of
   [] -> 0
   (x:xs) -> x + (sumList xs)

我问这个问题主要是因为我之前在使用 CodeWorld 放置颜色和形状以输出该颜色的形状时遇到过将两个 diff 函数放在一起的问题。

谢谢

(注:我现在使用 Haskell 才 5 周多,显然我是个菜鸟)


将输出作为输入传递给(另一个)函数

那么你基本上想做的是use the output of the getOddNumbers as input为了sumList函数,所以我们可以定义一个sumOddList功能为:

sumOddList :: [Integer] -> Integer
sumOddList l = sumList (getOddNumbers l)

Here l是我们要处理的列表,因此结果是对结果的函数应用getOddNumbers l (with sumList功能)。

链接函数:(.)功能

上面的模式很常见:我们经常希望首先通过函数传递数据g,以及通过函数得到的结果f。哈斯克尔有(.) :: (b -> c) -> (a -> b) -> a -> c函数“链接”函数。我们可以这样链接sumList and getOddNumbers一起像:

sumOddList :: [Integer] -> Integer
sumOddList = (.) sumList getOddNumbers

请注意,我们不再使用l参数在这里。sumOddList这里定义为“管道”,其中数据首先传递到getOddNumbers,然后由sumList功能。

The (.)函数也可以用作中缀运算符:

sumOddList :: [Integer] -> Integer
sumOddList = sumList . getOddNumbers
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 haskell 的新函数中使用过滤列表 的相关文章

  • 如何在haskell中获取变量名称

    我来到 haskell 时有一些 c 背景知识 想知道是否有类似的 define print a printf s d n a a int a 5 print a 应该打印 a 5 这是 augustss 提到的 TH 解决方案 LANGU
  • : 中缀运算符在 Haskell 中的作用是什么?

    我正在阅读Haskell 简要介绍 http www haskell org tutorial index html 这不是那么温和 并且它反复使用 操作符而不直接解释它的作用 那么 它到底有什么作用呢 是 前置 运算符 x xs 返回一个
  • scala 返回列表中的第一个 Some

    我有一个清单l List T1 目前我正在执行以下操作 myfun T1 gt Option T2 val x Option T2 l map myfun l flatten find gt true The myfun函数返回 None
  • 如何用流程图表示递归函数?

    我需要在流程图上表示递归函数 我的问题是我不知道如何指示该函数可以一次在多个元素上调用自身 例如扫描图形的函数 有人有什么建议吗 在流程图中 您通常不会为循环之类的内容添加多次调用 您只需指示可以重复调用代码 直到满足条件为止 因此 对于递
  • 搜索深度嵌套数组以更新对象

    我有一个深层嵌套的数据结构 我有兴趣匹配数组 和数组数组 中的某个值 然后将一些数据推送到随附的数组中 例如以下是我的数组colors并伴随着的是更多颜色数组可能存在也可能不存在 var myData color green moreCol
  • 如何在Python中按AaB而不是ABa顺序对字符串进行排序

    我正在尝试对字符串进行排序 为 punnetsquare 制作基因型 我目前的实现是 unsorted genotype ABaB sorted genotype sorted list unsorted genotype sorted s
  • 迭代列表的奇怪速度差异

    我创建了两个重复两个不同值的长列表 在第一个列表中 值交替出现 在第二个列表中 一个值出现在另一个值之前 a1 object object 10 6 a2 a1 2 a1 1 2 然后我迭代它们 不对它们执行任何操作 for in a1 p
  • 为什么Racket中foldl的定义方式很奇怪?

    在 Haskell 中 与许多其他函数式语言一样 函数foldl被定义为 例如 foldl 0 1 2 3 4 10 这没关系 因为foldl 0 1 2 3 4 根据定义 0 1 2 3 4 但是 在 球拍 中 foldl 0 1 2 3
  • Haskell 对于 Web 应用程序来说足够成熟吗? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Javascript - deepEqual 比较

    问题 来自 Eloquent Javascript 第二版 第 4 章 练习 4 编写一个函数 deepEqual 它接受两个值 并且仅当它们相等时才返回 true 是相同的值或具有相同属性的对象 其值也是 与对 deepEqual 的递归
  • Java递归方法求阶乘返回负输出[重复]

    这个问题在这里已经有答案了 我知道这是溢出 但问题是 20 是相对较小的数字 这不应该发生 对吧 有没有更好的方法来查找大数 例如 1000 的阶乘 而不会得到这种奇怪的结果 public class RecursiveFunctionsE
  • 使用 LINQ 通过一个属性比较两个列表

    假设我有以下内容 class Widget1 public int TypeID get set public string Color get set class Widget2 public int TypeID get set pub
  • 如何通过“cabal build”或“stack build”构建带有图标的项目

    我想构建一个带有图标的可执行文件 通过谷歌搜索 我发现这里的说明 https wiki haskell org Setting an executable icon 但它只能通过编译源文件来工作ghc 如果我想构建一个具有可执行文件的项目c
  • R中的字典数据结构

    在 R 中 我有 例如 gt foo lt list a 1 b 2 c 3 如果我输入foo I get a 1 1 b 1 2 c 1 3 我怎样才能看透foo仅获取 键 列表 在这种情况下 a b c R 列表可以具有命名元素 因此可
  • 需要在R中按行绑定列表数据

    我在 R 中按行绑定列表时遇到问题 我的列表数据集是 id 1 data k 1 id k b c 1 1 1 3 data k 2 id k b c 1 2 1 4 id 2 data k 1 id k b c 2 1 1 6 data
  • 如何在不声明新数据的情况下更改类型(String,Int)元组的 Ord 实例?

    我正在尝试对类型列表进行排序 String Int 默认情况下 它按字符串排序 然后按整数排序 如果字符串相等 我希望它是相反的 首先比较整数 然后如果相等则比较字符串 另外 我不想切换到 Int String 我找到了一种通过定义实例来实
  • .join() 方法到底是做什么的?

    我对 Python 还很陌生 并且完全困惑 join 我读过的是连接字符串的首选方法 I tried strid repr 595 print array array c random sample string ascii letters
  • 使用fold_left/right反转OCaml中的列表

    更新 解决方案 感谢 jacobm 的帮助 我想出了一个解决方案 Folding Recursion let reverse list 3 theList List fold left fun element recursive call
  • 如何在Haskell中实现词法分析器和解析器

    我在这里得到了这段代码 它是用Haskell结构的命令式编程语言编写的程序 所以问题是 我如何为这种语言实现词法分析器和解析器 该程序被定义为一系列语句有 6 种类型 goto write stop if goto 和 int int n
  • PowerShell:函数没有正确的返回值

    我编写了一个 powershell 脚本来比较两个文件夹的内容 Dir1 d TEMP Dir1 Dir2 d TEMP Dir2 function Test Diff Dir1 Dir2 fileList1 Get ChildItem D

随机推荐

  • 不明白为什么 string.index("word") 不起作用

    是否可以采用该方法 index word 在 python 中不起作用 我有这个清单 Viganello n Monday n 06 48 n 06 58 n 07 08 n 07 18 n 07 28 n 07 38 n 07 48 n
  • 有没有人有一个简单的一步步 Mozilla 插件教程

    我正在尝试创建一个 Mozilla 浏览器插件 其唯一目的是使用 javascript 检测是否安装了我编写的应用程序 这是受到另一个启发堆栈溢出问答关于类似的主题 我真正想要的只是一个 HelloWorld 类型的示例 因为我需要编写的内
  • imp.find_module() 支持压缩鸡蛋

    imp find module 没有从压缩的鸡蛋中找到模块 How can find模块可以来自两个地方 目录还是压缩蛋 对我来说 重要的是我可以提供path像 imp find module 这样的参数支持它 背景 不知何故 软件包在我们
  • 用户确认卸载时如何保存文件夹? (创新设置)

    当用户确认应用程序卸载时 如何将特定文件夹的备份副本保存到用户桌面 我尝试过但没有成功 也许有一种更简单的方法可以在不使用代码的情况下做到这一点 procedure CurUninstallStepChanged CurUninstallS
  • Qt - 初始化表单

    当我们打电话时setupUi 我们是初始化表格 什么是初始化形式是什么意思 如果我们不调用它会发生什么 Thanks 当调用 setupUi 时 将创建用户放置在表单上的所有 UI 元素 本质上 UIC 工具获取您在 Qt Designer
  • 如何限制某些程序集的反射?

    在我的 net 应用程序中 我想限制对某些程序集的反射 我的意思是我希望我的特定程序集只能由某些预定义的程序集反映 而不是由其他任何程序集反映 我怎样才能做到这一点 Edit 这个工具完全关闭程序集的 NET 反汇编和反编译 我想允许一些预
  • 如何设计具有多个接口的wpf应用程序

    我正在尝试学习如何设计具有多个不同用户界面的应用程序 它是医生可以查看患者记录 开处方等的应用程序 在设计这个 包括登录 时 我为登录 处方书写 病史浏览创建了单独的用户控件 并将它们的所有可见性设置为隐藏 然后我将它们全部放在主应用程序上
  • 在 Firefox 控制台中重新声明类时出错,但在 Chrome 控制台中则不然

    class Picture constructor icon this icon icon 当我在 Chrome 控制台中运行此代码两次时 它不会抛出任何错误 但是当我尝试在 Firefox 控制台中运行它两次时 它说Uncaught Sy
  • 是否可以在 postscript 中获取 argv[0] ?

    我想知道是否可以在 postscript 中获取 argv 0 例如 我希望能够打印 postscript 文件的名称 如果我将 postscript 文件命名为 1 ps 那么它将打印出 1 如果我将其命名为 2 ps 它将打印出 2 依
  • 使用 C# 截取屏幕截图,不包括任务栏。

    如何使用 C 截取屏幕截图而不包括任务栏 我尝试了一些代码 但它占据了整个屏幕 尝试与Screen PrimaryScreen WorkingArea它为您提供不包括任务栏的屏幕 Bitmap bmpScreenshot new Bitma
  • 如何仅匹配无扩展名的 URL?

    我想要一个仅匹配无扩展名网址的正则表达式 换句话说 如果 url 中存在扩展名 则完全忽略它 这将匹配带扩展名和不带扩展名的 URL www site com sports cricket 应该匹配 www site com sports
  • 为什么我没有获得 FCGI_END_REQUEST 记录?

    我目前在终止时遇到问题FastCGI要求 目前这是我的代码 use std os unix net UnixStream use std io Read Write use std str fn main const FCGI VERSIO
  • PHP Apple iOS 推送通知:Command2:二进制接口和通知格式

    如今 使用 Command 2 的 PHP 和 Apple iOS 推送通知已经变得流行 但不确定如何准备相同的格式 按照苹果指南在这里 如何实现如下数据包格式 也想知道如何领取Format of error response packet
  • 如何使用 swift 有条件地向 Firebase Firestore 中的查询添加另一个过滤器?

    我正在开发一个使用 Google firebase firestore 的项目 我想在用户搜索中实现一个过滤器 想象一下仅搜索活跃用户并带有用户可以选择的复选框 let db Firestore firestore let referenc
  • 连接到 iBeacon

    我可以使用以下命令扫描 iBeacons func locationManager manager CLLocationManager didRangeBeacons beacons AnyObject inRegion region CL
  • vbscript将word doc转换为pdf

    我编写了一个简短的 vb 脚本 用于打开 Word 文档 编辑一些书签并保存到新的 doc 文件 我现在需要将其转换为 pdf 文件 这足够简单 可以使用 CutePDF 之类的文件 通过将其发送到虚拟打印机 但我想自动化该步骤 任何人都可
  • Ubuntu 上的固件 Orion 上下文代理

    我愿意使用 FiWare Cloud 中的映像在 Ubuntu 12 04 服务器上安装 Orion 上下文代理独立实例 看起来 orion contextBroker 主要支持 CentOS 它要么是 rpm 包 要么是 yum 存储库
  • 使用 R 中的 glmmTMB 预测人口级别的栅格堆栈

    我正在尝试使用适合的 GLMM 来预测 R 中的栅格堆栈glmmTMB包 在人口水平 即将随机效应设置为 0 我遵循了 Ben Bolker 的解决方案这个线程适用于适合的模型lme4 但即使函数参数re form 0似乎适用于predic
  • 我可以合并 groupby 数据吗?

    我有主场和客场两栏 因此 一排将是英格兰对阵巴西 下一排将是巴西英格兰 如何计算一次巴西对阵英格兰或英格兰对阵巴西的次数 根据以前的解决方案 我尝试过 results groupby home team away team size res
  • 在 haskell 的新函数中使用过滤列表

    所以我不太确定如何正确表达这一点 但是假设我想获得列表中所有奇数的总和 我是否有两个函数 sumList 和 getOddNumbers 并将它们组合到 sumOddList 中 或者有没有办法将这两个放在一个函数中 如果没有更好的函数 我