在表达式中的 let .. 中使用守卫

2024-01-06

有时我会写这样的代码

solveLogic :: Int -> Int -> Int
solveLogic a b =
    let 
        x = 1
        brainiac
            | a >= x     = 1
            | a == b     = 333
            | otherwise  = 5
    in
        brainiac

每次我都想写这些东西而不需要不需要的“大脑”功能,就像这样:

solveLogic :: Int -> Int -> Int
solveLogic a b =
    let 
        x = 1
    in
        | a >= x     = 1
        | a == b     = 333
        | otherwise  = 5

哪个代码更加“哈斯克尔式”。有什么办法可以做到这一点吗?


是的,使用where clause:

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

在表达式中的 let .. 中使用守卫 的相关文章

  • 在 Haskell 中计算移动平均线

    我正在学习 Haskell 所以我尝试实现移动平均函数 这是我的代码 mAverage Int gt Int gt Float mAverage x a fromIntegral k fromIntegral x k lt rawAvera
  • Haskell 中的实例声明

    我有这两个功能 primes sieve 2 where sieve p xs p sieve x x lt xs x mod p gt 0 isPrime number number 1 null x x lt takeWhile x g
  • Haskell 类型系统的细微差别

    我一直在深入了解 haskell 类型系统的本质 并试图了解类型类的要点 我已经学到了很多东西 但我在下面的代码片段上遇到了困难 使用这些类和实例定义 class Show a gt C a where f Int gt a instanc
  • Haskell scala 互操作性

    我是 Scala 初学者 来自面向对象范式 在了解 Scala 的函数式编程部分时 我被引导到 Haskell 纯函数式编程语言 探索 SO 问题答案 我发现 Java Haskell 具有互操作性 我很想知道 Scala Haskell
  • Haskell:无法预期类型“Integer”与实际类型“Int”

    我已经盯着这段代码有一段时间了 但我无法理解该错误消息 divisors Integer gt Integer divisors n t t lt 1 n mod n t 0 length a gt Integer length 0 len
  • Haskell 中的 print 是纯函数吗?

    Is print在 Haskell 中是纯函数 为什么或者为什么不 我认为不是 因为它并不总是返回与纯函数应返回的值相同的值 类型的值IO Int并不是真正的Int 它更像是一张纸 上面写着 嘿 Haskell 运行时 请生成一个Int如此
  • 将 num 的签名键入 double?

    我才刚刚开始为你学习 Haskell 以获得伟大的好处 并且我在类型类方面遇到了一些麻烦 我想创建一个接受任何数字类型并强制其为双精度的函数 我的第一个想法是定义 numToDouble Num gt Double 但我认为这不起作用 因为
  • 如何在 Haskell 中安装库?

    我尝试使用控制 Monad Extra andM https hackage haskell org package extra 1 7 10 docs Control Monad Extra html import Control Mon
  • 使用 FoldLine 解析多个块

    对于这个简化的问题 我试图解析一个如下所示的输入 foo bar baz quux woo hoo xyzzy glulx into foo bar baz quux woo hoo xyzzy glulx 我尝试过的代码如下 import
  • Haskell 入门

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 几天来 我一直试图理解 Haskell 中的函数式编程范例 我通过阅读教程和观看截屏视频
  • 如何在 Haskell 中制作打勾游戏的图案?

    实现有 2 个参数的函数 ticktick 第一个参数是自然数元组 定义游戏场地的行数和列数 第二个列表包含由玩家 x 和玩家 o 轮流玩的坐标给出的井字游戏比赛的记录 打印游戏的实际状态 其中游戏区域将由字符 和 界定 空方块 以及字符
  • Haskell 中的尾递归字符串分割

    我正在考虑分割字符串的问题s在一个字符处c 这表示为 break c s 其中 Haskell 库定义break c 足够接近 br br s h t if c h then s else let h t br t in h h t 假设我
  • 你能识别 Haskell 程序中的无限列表吗? [复制]

    这个问题在这里已经有答案了 可能的重复 如何判断列表是否是无限的 https stackoverflow com questions 7371730 how to tell if a list is infinite 在Haskell中 你
  • 我该如何实现这个折叠功能呢?

    给出了两种数据类型 颜色 和 植物 data Color Red Pink White Blue Purple Green Yellow deriving Show Eq data Plant Leaf Blossom Color Stal
  • Haskell 标准库是什么?

    GHC专用库可以称为标准库吗 或者只有 Haskell 2010 报告中的那些才算数 许多 GHC 库可以通过 Haskell 报告中的函数来实现 可能与 C 绑定相结合 但其他语言依赖于 GHC 特定的扩展 因为语言报告中定义的当前 Ha
  • 如何在不声明新数据的情况下更改类型(String,Int)元组的 Ord 实例?

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

    如何从一组数字 1 2 3 直到我击中x 我的计划是重新调整列表 1 2 3 并把它砍在x chopAt 3 2 3 1 2 3 chopAt 3 2 1 3 2 1 3 chopAt 3 3 1 2 3 chopAt chopAt x y
  • 我是否需要采取明确的操作来促进与持久数据结构的共享?

    我来自命令式背景 正在尝试实现一个简单的不相交集 并集查找 数据结构 以获得在 Haskell 中创建和修改 持久 数据结构的一些练习 目标是有一个简单的实现 但我也关心效率 我的问题与此相关 首先 我创建了一个按等级并集的不相交集森林实现
  • 关于“没有绑定的类型签名”的错误

    我在 Haskell 中遇到 ASCII 问题 fromEnum Char gt Int toEnum Int gt Char offset Int offset fromEnum A fromEnum a toUpper Char gt
  • 树莓派 2 上的 GHCi?

    我正在开发一些在 raspberry pi 2 上运行的 haskell 项目 以及可以使用 raspbian 7 4 1 中的 apt get 安装的 ghc 版本 但它没有 GHCi 这会阻止一些重要的包 如 Vector 的编译 我看

随机推荐

  • matplotlib:如何刷新figure.canvas

    我不明白如何刷新FigureCanvasWxAgg 实例 这是示例 import wx import matplotlib from matplotlib backends backend wxagg import FigureCanvas
  • 根据 Windows 主题更改面板的主题(颜色)

    我想根据当前选择的 Windows 主题更改面板的颜色 我已经设置了道具 EnableVisStyles 它改变了工具栏和 Windows 窗体的标题栏等内容 但面板颜色保持不变 有什么办法可以实现这一点吗 问候 严酷的苏曼 您可能已经设置
  • 在 C# 中将委托转换为通用委托

    介绍 我使用委托来传递和存储单个表单的样式逻辑Controls 例如 我有一个委托 其中包含一些Button 样式逻辑如下 button BackColor Color Red button ForeColor Color White bu
  • 在 C 中创建字符串数组

    我想创建一个包含 N 个位置的数组 在每个位置 我想存储一个10个字符的字符串 这就是我尝试过的 在给出的示例中 N 15 但是这个数字可以改变 char userArray 10 malloc sizeof char 10 15 编译 i
  • ImageMagick 缺少解码委托

    我最近搬到 MediaTemple 并按照他们的知识库文章安装了 ImageMagick 和 IMagickhere http kb mediatemple net questions 1778 Is ImageMagick install
  • “无法在任何存储库中找到有效的 gem”(rubygame 等)

    我尝试安装这个 rubygame gem有一段时间了 但是每当我使用该命令时 gem install rubygame 它会给出一个错误 ERROR Could not find a valid gem rubygame gt 0 in a
  • 等待执行器中的所有线程完成?

    我正在实现并行快速排序作为编程实践 完成后 我阅读了 Executors 上的 Java 教程页面 这听起来像是它们可以使我的代码更快 不幸的是 我依靠 join 来确保程序在所有内容都排序完成之前不会继续 现在我正在使用 public s
  • 如何防止 grep 打印尾随换行符?

    我在用grep产生将由另一个程序解析的输出 但是 该程序期望输出仅为数字或零字节 Now grep在输出后输出一个换行符 我已经检查过 Z选项 但它似乎不起作用 因为我正在使用 grep 进行计数 c 我正在执行sh not bash 所以
  • 如何使用 JavaScript/jQuery 将新数据发布到 CouchDB

    我找到了答案here https stackoverflow com questions 2099728 how do i send an ajax request on a different port with jquery对于下面的问
  • C语言中为什么会有NULL?

    为什么有一个NULL在C语言中 是否有一个上下文 其中只是简单的文字0会不会工作完全一样 实际上 你可以使用文字0任何你会使用的地方NULL 第 6 3 2 3p3 节C标准 http www open std org jtc1 sc22
  • Flutter:从其他页面访问存储的 Sharedpreference 值

    我正在一个名为的页面中存储一个值page1 dart 我想访问存储的值page2 dart or page3 dart 我怎样才能实现这个目标 Flutter 共享首选项实际上是作为内存缓存实现的 你第一次打电话的时候SharedPrefe
  • 使用 OpenCV 时 Apple Mach-O 链接器和多个“未定义符号”错误

    我目前是 Objective C 的真正初学者 我正在使用 OpenCV 框架开发一个应用程序 我正在遵循教程 但是在构建项目时 我遇到了几个错误 Undefined symbols for architecture i386 std 1
  • 获取 Android 上的所有总空间和可用空间

    据我所知 Android 上有 应用程序和缓存的内部存储器 某些手机 上的内置 SD 卡 不可拆卸 用于存储音乐和照片的外部 SD 卡 可拆卸 如何通过检查它们是否存在来获取每个手机的总数和可用数量 某些手机没有内部 SD 卡 Thanks
  • iOS - 链接器错误、重复符号

    似乎我在尝试编译时遇到错误 它似乎直接指向两个文件 MenuViewController 和 FirstTopViewController 我认为这与我的导入有关 因为它们每个都在导入另一个 但是错误引用了我的 Building 对象 该对
  • 打瞌睡模式和应用程序待机

    我如何在我的应用程序中知道手机是否处于打瞌睡模式或我的应用程序是否处于待机模式 我也可以通过某种订阅方式知道吗 有一个区别应用程序待机 您的应用程序转到的位置 睡觉是因为很孤独 和Doze 系统去哪里 睡觉 因为用户有生命 Doze仅当您的
  • 使用 Dapper 映射 SqlGeography

    我有实体 Point 其中包含 ID 文本和地理坐标 CREATE TABLE Point Id INT IDENTITY CONSTRAINT PK Point Id PRIMARY KEY Coords GEOGRAPHY NOT NU
  • android ConstraintLayout 不允许负边距

    我相对于布局指南放置了很多项目 并希望将新项目放置在几乎与此布局指南相关的位置 我尝试使用负布局边距但没有成功 android translationX 10dp android translationY 10dp
  • Laravel:使用 AJAX 请求渲染部分视图

    我正在尝试制作一个单页 CRUD 应用程序 并且将 AJAX 与 jQuery 结合使用 在本例中 我提交表单并在数据库中异步存储一个新国家 地区 然后使用新数据渲染部分视图 这是我的脚本和从数据库检索国家 地区并返回部分视图的方法 cre
  • 写入错误:使用 O_DIRECT 打开文件时参数无效

    对我来说 用以下内容写入文件非常重要O DIRECT flag 这就是我打开文件的方式 Open the file int fd if fd open inFilepath O WRONLY O CREAT O SYNC O DIRECT
  • 在表达式中的 let .. 中使用守卫

    有时我会写这样的代码 solveLogic Int gt Int gt Int solveLogic a b let x 1 brainiac a gt x 1 a b 333 otherwise 5 in brainiac 每次我都想写这