格雷特函数定义

2023-12-05

我想定义一个更大的函数,它从比之前的列表项大的列表项中进行选择。

例如:

greaters [1,3,2,4,3,4,5] == [3,4,4,5]
greaters [5,10,6,11,7,12] == [10,11,12]

我想出的定义是这样的:

greaters :: Ord a => [a] -> [a]

到目前为止我尝试过的事情:

greaters (x:xs) = group [ d | d <- xs, x < xs ]

有小费吗?


我们可以推导出一个foldr基于的解决方案,从手卷递归解决方案开始进行一系列重写接受的答案:

greaters :: Ord a => [a] -> [a]
greaters [] = []
greaters (x:xs) = go x xs          -- let's re-write this clause
  where
    go _ [] = []
    go last (act:xs)
      | last < act  =  act : go act xs
      | otherwise   =        go act xs

greaters (x:xs) = go xs x          -- swap the arguments
  where
    go [] _ = []
    go (act:xs) last
      | last < act  =  act : go xs act 
      | otherwise   =        go xs act 

greaters (x:xs) = foldr g z xs x   -- go ==> foldr g z
  where
    foldr g z [] _ = []
    foldr g z (act:xs) last
      | last < act  =  act : foldr g z xs act 
      | otherwise   =        foldr g z xs act 

greaters (x:xs) = foldr g z xs x
  where                          -- simplify according to
    z _ = []                     --   foldr's definition
    g act (foldr g z xs) last 
      | last < act  =  act : foldr g z xs act 
      | otherwise   =        foldr g z xs act 

因此,最后一次重写foldr g z xs ==> r,

greaters (x:xs) = foldr g z xs x
  where
    z = const []
    g act r last
      | last < act  =  act : r act 
      | otherwise   =        r act 

额外的参数用作state当我们沿着输入列表前进时,状态是前一个元素;从而避免了施工zip具有相同目的的移位对列表。

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

格雷特函数定义 的相关文章

  • 如何通过“cabal build”或“stack build”构建带有图标的项目

    我想构建一个带有图标的可执行文件 通过谷歌搜索 我发现这里的说明 https wiki haskell org Setting an executable icon 但它只能通过编译源文件来工作ghc 如果我想构建一个具有可执行文件的项目c
  • Data.Sequence 中的 inits 和 tails 如何工作?

    Louis Wasserman 编写了当前的实现inits and tails in Data Sequence 他表示它们非常高效 事实上 只要查看代码 我就可以看到 无论它们在做什么 它们都是以干净 自上而下的方式进行的 这往往会给惰性
  • 管道:多个流消费者

    我编写了一个程序来计算语料库中 NGram 的频率 我已经有一个函数 它消耗一串令牌并生成一个订单的 NGram ngram Monad m gt Int gt Conduit t m t trigrams ngram 3 countFre
  • Haskell Data.Decimal 作为 Aeson 类型

    是否可以解析一个数据 十进制 https hackage haskell org package Decimal 0 4 2 docs Data Decimal html使用 Aeson 包从 JSON 获取 假设我有以下 JSON foo
  • 如何在Haskell中实现词法分析器和解析器

    我在这里得到了这段代码 它是用Haskell结构的命令式编程语言编写的程序 所以问题是 我如何为这种语言实现词法分析器和解析器 该程序被定义为一系列语句有 6 种类型 goto write stop if goto 和 int int n
  • 数量重新分配逻辑 - 具有外部数据集的 MapGroups

    我正在研究一种复杂的逻辑 需要将数量从一个数据集重新分配到另一个数据集 在例子中我们有Owner and Invoice 我们需要从数量中减去Invoice准确地Owner匹配 在给定汽车的给定邮政编码处 减去的数量需要重新分配回同一辆车出
  • 你能在 scala 中使用 varargs 柯里化一个函数吗?

    我正在考虑如何用可变参数柯里化一种方法 然后我意识到我什至不知道如何去做 理想情况下 它应该让您可以随时开始使用它 然后以可迭代结束 def concat strs String strs mkString val curriedConca
  • C++ 概念与 Haskell 类型类有何不同?

    Concepts TS 中的 C 概念最近已合并到 GCC 主干中 概念允许人们通过要求类型满足概念的条件 例如 可比较 来约束通用代码 Haskell 有类型类 我对 Haskell 不太熟悉 概念和类型类如何相关 概念 由概念 TS 定
  • 迭代打印列表中的每个整数

    假设我有一个整数列表l 1 2 我想打印到stdout Doing print l产生 1 2 假设我想打印不带大括号的列表 map print l产生 No instance for Show IO arising from a use
  • 卷积函数可以写成尾递归形式吗?

    我有一个函数 我想以尾递归形式编写 该函数计算求和的方法数k通过滚动s双面模具n次 我已经在上面看到了这个函数的数学解这个答案 https math stackexchange com questions 397689 why convol
  • 在 Haskell 中获取玫瑰树的根

    最近我开始学习 Haskell 并在以下练习中遇到困难 Write functions root Rose a gt a and children Rose a gt Rose a that return the value stored
  • Parsec.Expr 具有不同优先级的重复前缀

    Parsec Expr buildExpressionParser 的文档说 相同优先级的前缀和后缀运算符只能出现一次 即 如果 为前缀否定 则不允许使用 2 但是 我想解析这样的字符串 具体来说 考虑以下语法 sentence ident
  • 在 ghci 下执行 `(read "[Red]") :: [Color]` 时会发生什么?

    我正在阅读以下小节现实世界 Haskell 第 6 章 类型类 http book realworldhaskell org read using typeclasses html关于一个实例Read for Color 它实现了reads
  • 自定义 monad 的 MonadTransControl 实例

    的文档monad control提供有关如何创建实例的示例MonadTransControl using defaultLiftWith and defaultRestoreT 该示例适用于以下情况newtype newtype Count
  • Haskell 点运算符

    我尝试在 Haskell 中开发一个简单的平均函数 这似乎有效 lst 1 3 x fromIntegral sum lst y fromIntegral length lst z x y 但是为什么下面的版本不行呢 lst 1 3 x f
  • 如何在 Haskell 中使 CAF 不是 CAF?

    如何将常量应用形式变成 而不是常量应用形式 以阻止它在程序的生命周期中保留 我尝试过这种方法 Dummy parameter to avoid creating a CAF twoTrues gt Bool twoTrues map Tru
  • 管道 - 将多个来源/生产者合并为一个

    我正在使用读取文件sourceFile 但我还需要在处理操作中引入随机性 我认为最好的方法是拥有一个这样的制片人 Producer m StdGen ByteString 其中 StdGen 用于生成随机数 我打算让生产者执行 source
  • 我可以从 GHCi 中找到 GHC 版本吗?

    gt 我在里面输入什么GHCi发现它正在使用哪个 GHC 版本 gt import System Info gt browse arch String compilerName String compilerVersion Data Ver
  • Python 比编译的 Haskell 更快?

    我有一个用 Python 和 Haskell 编写的简单脚本 它读取包含 1 000 000 个换行符分隔的整数的文件 将该文件解析为整数列表 对其进行快速排序 然后将其写入已排序的不同文件中 该文件与未排序的文件具有相同的格式 简单的 这
  • 与 Functor 不同,Monad 可以改变形状?

    我一直很喜欢以下关于单子相对于函子的力量的直观解释 单子可以改变形状 函子不能 例如 length fmap f 1 2 3 总是等于3 然而 对于单子来说 length 1 2 3 gt gt g往往不等于3 例如 如果g定义为 g Nu

随机推荐

  • 如何交替交换大写和小写?

    我正在编写一个程序 可以将大写字母转换为小写字母 也可以将小写字母转换为大写字母 这里有些例子 abcde gt aBcDe ABCDE gt aBcDe abCdE gt aBcDe 我知道如何用 c 语言编写它 但不知道如何用 shel
  • Java 节流

    我如何使用组合ScheduledThreadPoolExecutor ScheduledFuture and ExecutorCompletionService节流Callable接受可变参数的命令 收到回复后Callable命令 我需要创
  • Firebase 到自定义 Java 对象

    users mchen friends brinchen true name Mary Chen widgets one true three true brinchen hmadi 如何为上面的示例编写自定义对象类 Firebase 中的
  • 有什么方法可以使用 Facebook 的 PHP SDK 或 API 取消好友关系或删除好友吗?

    我希望能够对用户进行身份验证 列出他们的所有朋友 并让他们能够取消好友 删除其中一些朋友 而无需通过 Facebook com 网站上的流程 这可以通过 API 实现吗 没有可用于以编程方式添加或删除好友的 API 可用的是您的应用可用来帮
  • ApplicationPoolIdentity无法访问网络资源

    我的设置 W2K8 R2 IIS7 5 x64 位服务器 但应用程序池以 32 位运行 我们有一个在 ApplicationPoolIdentity 下运行的 net 4 0 Web 应用程序 它启用了 Windows 身份验证 Web 应
  • 调用 finish() 不会清除对 Activity 的内存引用

    在我的应用程序的简化版本中 我有两个活动 A 和 B 活动 A 启动 B 并在完成一些工作后 B 调用 finish 在大多数设备 运行 4 2 的 Galaxy Nexus 运行 4 0 4 的 Droid 4 和运行 2 3 4 的 D
  • Windows().Activate 适用于除一台计算机之外的所有计算机

    我遇到了一个奇怪的问题 我做了一个宏year ago并且它正在被使用每个月都没有问题 昨天我的老板告诉我 他不能再使用它了 这会给他带来一些错误 我现在尝试了宏8台电脑和宏观跑得很完美 为什么宏在其他人的计算机上运行 除了我的老板 它中断的
  • 创建powershell参数默认值为当前目录

    我希望创建一个参数 其默认值为 当前目录 例如 Path的参数Get ChildItem PS gt Get Help Get ChildItem Full 小路 指定到一个或多个位置的路径 允许使用通配符 默认位置是当前位置 目录 Req
  • GoogleApiClient 尚未连接,即使调用了 onConnected 并且我正在 onCreate 中创建 GoogleApiClient

    我在这里查看了这个问答 调用 onConnected 函数后 GoogleApiClient 抛出 GoogleApiClient 尚未连接 因为它似乎与我所经历的相似 但事实并非如此 该用户的问题是他们在 onStart 方法中声明他们的
  • 使用sed替换xml属性

    我的文件包含这样一行
  • 匹配不在span标签内的文本

    使用 Javascript 我尝试将 span 标签包裹在页面上的某些文本周围 但我不想将标签包裹在一组 span 标签内已有的文本周围 目前我正在使用 html container html var regex s nbsp apple
  • Powershell远程执行速度极慢?

    有什么方法可以加快 powershell 远程处理的速度吗 现在 要在我的虚拟机上执行 远程 命令 只需使用带有凭据的 Invoke Command 执行一个简单的 hello world 就需要大约 30 90 秒 如果我在初始执行后立即
  • 在 swift 类中实现 AsyncSocket 回调

    我有一个自定义 ViewController 委托类 它处理 ui 操作 例如单击按钮和在文本视图中显示文本 现在我想在类中使用AsyncSocket 我已经能够创建一个套接字对象 var tcpSocket GCDAsyncSocket
  • 有没有办法在main.js中访问vue js Vue Session

    我在 main js 中进行了以下设置 import Vue from vue import App from App vue import VueRouter from vue router import Home from views
  • 读取android系统文件

    我尝试了很多读取文件的解决方案 但没有一个有效 我需要一种方法来读取系统文件并在 toast 或对话框中显示文本 当然我的应用程序有root权限 单击复选框后 我必须在 toast 中显示 eoc status 的内容 例如 Runtime
  • 添加一个从未调用过的函数可以改善行为吗?

    下面的代码会产生不良结果 20010101 20010102 当取消注释 String func 时 它会产生更好的结果 但不是我的实现 20010101 1 5 20010102 2 5 然而 该 String 函数从未被调用 我看到 D
  • Facebook 操作脚本 3 API 登录/注销问题

    我正在使用 Flash builder 4 5 AIR 2 6 制作适用于 Android 的移动 AIR 应用程序 Facebook动作脚本3 API最新版本 我遇到登录 注销问题 我只能登录一次 然后我的数据会以某种方式缓存 Faceb
  • Visual Studio 中的远指针声明

    我以这种方式有一个远指针声明 char far p 但 Visual Studio 2008 给了我 error C2146 missing before identifier p 任何帮助表示赞赏 far是 16 位 Microsoft
  • 如何在C#中创建和使用dll文件

    我目前正在尝试学习如何用 C 和 C 编写和使用适用于 Windows 的 dll 文件 我想一旦我理解了其中一种语言 我就能很容易地弄清楚另一种语言 我今天搜索了 5 个多小时 但没有找到有效的 dll 指南 它们要么已经过时并且拒绝与我
  • 格雷特函数定义

    我想定义一个更大的函数 它从比之前的列表项大的列表项中进行选择 例如 greaters 1 3 2 4 3 4 5 3 4 4 5 greaters 5 10 6 11 7 12 10 11 12 我想出的定义是这样的 greaters O