2013-02-12 17 views
7

Haskell'de \\'un ne anlama geldiğini bulmaya çalışıyorum?Çift ters eğik çizgi \ Haskell'de ne anlama geliyor?

Programlanmış herhangi bir yerde tanımlanmadığı için, \\'un yerleşik bir işlev olduğunu ima ederek, derlendiğinde mükemmel çalışan bir programım var. Ancak, GHCi'de, aynı şekilde kullanmaya çalışırsam, kapsamda olmadığını belirten bir hata alıyorum.

Her bir bağlamda özel bir şey ifade ediyor mu?

İşte kodum;

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 
+0

İlk önce Google'ı deneyin? – Piccolo

+21

İlk önce [Hoogle] (http://www.haskell.org/hoogle/) adresini deneyin. –

+0

Her zaman Google'ı denerim ... ama Hoogle? Hiç duymadım ... Teşekkürler! Benim cevabım var! – CodyBugstein

cevap

20

\\list difference operator olduğunu. Bunu GHCi'de kullanabilirsiniz, sadece önce Data.List'u almanız gerekir. Ben import Data.List gibi kitle ithalatı kaçınarak öneririm ve import Data.List ((\\)) yüzden sadece içe aktardığınız şeyin daha farkında olabilir daha belirgin olmak üzere neden Bir dipnot düşmek gerekirse

Prelude> :m Data.List 
Prelude Data.List> [1..5]\\[3,4] 
    [1,2,5] 

, bu.

+0

Harika bir açıklama, teşekkürler! – CodyBugstein

+0

Downvoter'a yorum yapmak ister misiniz? – jozefg

9

list difference operation'dur. hoogle'u kullanmayı biliyorsanız, bu gibi şeyleri bulmak kolaydır.

+5

Sadece bunu duydum. Soruları göndermeden önce her zaman Hoogle'a danışacağım. teşekkür ederim – CodyBugstein