
I posted this question on Stackoverflow[1] yesterday and haven't received any answers yet. I've duplicated the question below, but an answer posted to StackOverflow would be more useful to future students, if you're so inclined. Thanks! --- In section 3.5.6 of the Curry tutorial (pdf) <https://www.informatik.uni-kiel.de/~curry/tutorial/tutorial.pdf>, we are advised to use default rules to "regain control after a failed search". The following example is given. (For clarity I have added a type signature and curried the input.) lookup :: k -> [(k,v)] -> Maybe v lookup key (_++[(key,value)]++_ ) = Just value lookup’default _ _ = Nothing I can't get that to compile unless I replace the ’ with a '. Once I do, it behaves like this: test> test.lookup 1 [(2,3)] *** No value found! Question 1: What is the default declaration for? Why would you need to specify that a particular clause is the default one? Won't it be arrived at one way or another, once the others fail? Question 2: How is it written? Should it be written at all? If instead I drop the string 'default: lookup :: k -> [(k,v)] -> Maybe v lookup key (_++[(key,value)]++_ ) = Just value lookup _ _ = Nothing it behaves as intended: test> test.lookup 1 [(2,3)] Nothing test> Has the 'default syntax changed since the tutorial was written? Has it been removed altogether? [1] https://stackoverflow.com/questions/53357361/specifying-default-rules-in-the... -- Jeff Brown | Jeffrey Benjamin Brown Website <https://msu.edu/~brown202/> | Facebook <https://www.facebook.com/mejeff.younotjeff> | LinkedIn <https://www.linkedin.com/in/jeffreybenjaminbrown>(spammy, so I often miss messages here) | Github <https://github.com/jeffreybenjaminbrown>