recursion - Recursively dropping elements from list in Haskell -


right i'm working on problem in haskell in i'm trying check list particular pair of values , return true/false depending on whether present in said list. question goes follows:

define function called after takes list of integers , 2 integers parameters. after numbers num1 num2 should return true if num1 occurs in list , num2 occurs after num1. if not must return false.

my plan check head of list num1 , drop it, recursively go through until 'hit' it. then, i'll take head of tail , check against num2 until hit or reach end of list.

i've gotten stuck pretty early, have far:

after :: [int] -> int -> int -> bool after x y z     | y /= head x =  after (drop 1 x) y z 

however when try run such after [1,4,2,6,5] 4 5 format error. i'm not sure how word line such haskell understand i'm telling do.

any appreciated! :)

edit 1: error in question:

program error: pattern match failure: after [3,num_fromint instnum_v30 4] 3 (num_fromint instnum_v30 2) 

try this:

after :: [int] -> int -> int -> bool after (n:ns) b | n == = ns `elem` b                  | otherwise = after ns b after _      _ _ = false 

basically, function steps through list, element element. if @ point encounters a (the first number), checks see if b in remainder of list. if is, returns true, otherwise returns false. also, if hits end of list without ever seeing a, returns false.


Comments

Popular posts from this blog

python - cx_oracle unable to find Oracle Client -

Delphi XE2 Indy10 udp client-server interchange using SendBuffer-ReceiveBuffer -

Qt ActiveX WMI QAxBase::dynamicCallHelper: ItemIndex(int): No such property in -