Haskell - for 循环

2023-11-22

如果我想表达类似的东西[只是一个简单的例子]:

int a = 0;
for (int x = 0; x < n; x += 1)
    a = 1 - a;

我应该在哈斯克尔做什么,因为它没有变量概念?(可能是错的,参见:Haskell 有变量吗?)


有几种选择。首先,您可以用朴素递归重写问题:

loop :: Int -> Int
loop n = loop' n 0
  where loop' 0 a = a
        loop' n a = loop' (n - 1) (1 - a)

接下来,您可以将递归重新表述为折叠:

loop :: Int -> Int
loop n = foldr (\a _ -> 1 - a) 0 [0..n]

或者你可以使用State模拟 for 循环:

import Control.Monad
import Control.Monad.State

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

Haskell - for 循环 的相关文章

  • 保存下拉列表中的值

    这是我的情况 我有 2 页 一页用于选择值 一页用于编辑与该值关联的数据库相关内容 现在 我对如何将从下拉列表中选择的值保存到 PHP 的变量中一无所知 并且已经进行了相当多的研究 有任何想法吗 HTML
  • R:中断 for 循环

    你能确认下一个break是否取消了内部for循环吗 for out in 1 n old id velho lt old table df id out for in in 1 n id novo lt new table df ID in
  • Bash 目录上的 For 循环

    快速背景 ls src file1 file2 dir1 dir2 dir3 Script bin bash for i in src do if d i then echo i fi done Output src dir1 src di
  • 这个for循环是什么意思? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions for S
  • 将“Functor”类泛化为“MultiFunctor”?

    我正在学习 自由应用函子 https arxiv org pdf 1403 0749 pdf 当然 我要问的问题有点偏离论文的主要思想 但仍然 第 6 页试图概括Functor to MultiFunctor class Functor f
  • For 循环内的 For 循环 Javascript

    由于某种原因 该语句跳过了一些数据 我是否缺少一个 continue 语句某处或某事 这是代码 for var i 0 len data ORDER STATUS 0 ORDERS length i lt len i if data ORD
  • Haskell 五个独特的 Wordle 单词

    为了好玩 我正在尝试解决 Matt Parker 在他的 Haskell 频道 Standup Maths in Haskell 频道的链接视频中谈到的与 Wordle 相关的问题 基本上 找到 5 个没有任何共同字母的 5 个字母单词 因
  • 使用 Guava 联合两个 ImmutableEnumSets

    我想联合两个ImmutableEnumSets来自番石榴 这是我的尝试 public final class OurColors public enum Colors RED GREEN BLUE YELLOW PINK BLACK pub
  • 在每次迭代中使用 for 循环的索引命名图像

    我正在使用 MATLAB 进行图像处理项目 我使用 for 循环在每次循环迭代时生成某种图像数据 图像大小不同 我的问题是如何阻止它在下一次迭代中覆盖图像 Img i j data 理想情况下我希望它有 Img 1 data for 1st
  • Java:如何读取一个 int 的多个扫描仪值

    我一直在试图弄清楚如何根据从获得的输入来计算面积和体积Scanner班级 该练习包括一次接收多对半径和高度 我已经编写了这些方法并对其进行了测试 所以这些方法应该有效 我遇到的问题是当我想使用 扫描仪 的输入并使用它们进行计算时 这是我的代
  • for语句中的多个条件

    我在一个函数中有这段代码 但是当它运行时 它会停顿很长时间 然后它说 floating point exception 我假设这是由于 for 循环中的多个条件造成的 但我不知道为什么这是错误的 有任何想法吗 int i j number
  • 过滤路径列表以仅包含文件

    如果我有一个清单FilePaths 如何过滤它们以仅返回常规文件 即不是符号链接或目录 例如 使用getDirectoryContents main do contents lt getDirectoryContents foo bar l
  • 告诉阴谋集团主模块在哪里

    我有一个具有以下结构的项目 foo cabal src Foo Main hs foo cabal 的一部分如下所示 executable foo main is Foo Main hs hs source dirs src Main hs
  • 不理解 Monoid 定义中态射的表示法

    我试图理解什么Monoid是从范畴论的角度来看的 但我对用来描述它的符号有点困惑 这是维基百科 在范畴论中 幺半群范畴 C I 中的幺半群 或幺半群对象 M 是一个对象 M 和两个态射 M M M 称为乘法 I M 称为单位 我的困惑在于态
  • R中的for循环和if函数

    我正在用 R 中的 if 函数编写一个循环 表格如下 ID category 1 a 1 b 1 c 2 a 2 b 3 a 3 b 4 a 5 a 我想使用 for 循环和 if 函数添加另一列来计算每个分组的 ID 如下所示的计数列 I
  • 浏览前奏的源代码会带来奇怪的情况

    我一直在寻找的定义seq并遇到了这个奇怪的事情 为什么所有这些函数都有相同 相似的定义 seq a gt b gt b seq let x x in x inline a gt a inline let x x in x lazy a gt
  • 将此 MATLAB 代码转换为 Python 时我做错了什么?

    我正在努力将生成波形的 MATLAB 代码转换为 Python 就上下文而言 这是原子力显微镜带激发响应的模拟 与代码错误无关 在 MATLAB 中从 r vec 生成的图形与我在 Python 中生成的图形不同 我是否正确地将 MATLA
  • 循环内声明的变量在循环的每次迭代中保持值

    我无法确定这是一个错误还是一个功能 For i 0 To 4 Dim strTest As String If i 0 Then strTest test value End If Console WriteLine strTest Nex
  • 批处理 - 将 dir 命令的输出存储到变量 - 目录列表中

    我需要将整个目录列表存储到一个变量中 然后将所述变量作为参数传递给另一个脚本 直接或首先将 dir 的输出存储到文本文件中 然后执行如下操作 dir path todir gt temp txt set p VAR
  • for 循环和 into_iter() [重复]

    这个问题在这里已经有答案了 据我了解 for循环隐式调用into iter 在向量上循环遍历它 但是 在下面的代码中 为什么vec在 Question1 1 的第一个 for 循环中没有消耗 但在第二个 for 循环中 vec 消耗了 fn

随机推荐