Haskell中的双反斜杠是什么意思?

Cod*_*ein 8 syntax haskell

我想弄清楚\\Haskell中有什么 意思?

我有一个程序在编译时运行得很好,这意味着它\\是一个内置函数,因为它没有在程序中的任何地方定义.但是,在GHCi中,如果我尝试以相同的方式使用它,我会收到一个错误,说它不在范围内.

这是否意味着每种情况下都有特殊之处?

这是我的代码;

module Main where

import Data.List

numbersA = [1, 105, 103, 7, 4, 102, 3, 101, 107, 8, 9]

numbersB = [6, 9, 7, 8, 1, 5, 3, 2, 4]

type Number = Integer

type Run = [Number]

extractRuns :: [Number] -> [Run]
extractRuns [] = []
extractRuns xs = run : extractRuns xs'
                   where run = buildRun (head xs) (tail xs)
                         xs' = xs \\ run

buildRun :: Number -> [Number] -> Run
buildRun seed numbers
  | endRun    = [seed]

  | otherwise = seed : buildRun seed' numbers'
                  where endRun     = successors == []
                        successors = filter (.#. seed) numbers
                        numbers'   = numbers \\ [seed]
                        seed'      = head successors

(.#.) :: Number -> Number -> Bool
x .#. y = x /= y && abs (x - y) < 10

runs = extractRuns numbersA

main = print runs
Run Code Online (Sandbox Code Playgroud)

Dan*_*zer 22

\\列表差异运算符.你可以在GHCi中使用它,你必须先导入Data.List.

Prelude> :m Data.List
Prelude Data.List> [1..5]\\[3,4]
  [1,2,5]
Run Code Online (Sandbox Code Playgroud)

在旁注中,这就是为什么我建议避免大量进口,import Data.List以及更具体,import Data.List ( (\\) )以便您可以更加了解您正在导入的内容.


Phi*_* JF 9

这是列表差异操作.如果你知道使用hoogle,那么弄清楚这样的事情很容易.

  • 刚刚听说过.在发布问题之前,我会先咨询Hoogle.谢谢 (5认同)