小编Sil*_*Way的帖子

无法理解元组递归在Haskell中是如何工作的

我无法理解这个功能是如何工作的.该函数应该接受一个字符串并将该字符串拆分成一对,其中第一个元素是字符串中的第一个"字",第二个元素是输入字符串的其余部分.

特别是,在第6行,我理解为什么函数应当在isSpace c为true 时终止但不理解为什么它应该返回第一个元素为空列表的元组.我想知道是否有人可以解释为什么这适用于一个相对简单(但非平凡)的例子,如nextWord "an apple".

import Data.Char
nextWord :: String -> (String, String)
nextWord []
  = ([],[])
nextWord (c:cs)
  | isSpace c = ([], cs)
  | otherwise = (c: word, other)
  where
    (word, other) = nextWord cs
Run Code Online (Sandbox Code Playgroud)

编辑:作为给定参数以空格开头时此函数返回的示例,nextWord"hello"应返回("","hello").

recursion haskell tuples list

6
推荐指数
1
解决办法
397
查看次数

标签 统计

haskell ×1

list ×1

recursion ×1

tuples ×1