[curry] Specifying default rules: Why and how?

From: Jeffrey Brown <jeffbrown.the_at_gmail.com>
Date: Sun, 18 Nov 2018 19:50:17 -0500

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



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)]

Has the 'default syntax changed since the tutorial was written? Has it been
removed altogether?

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>

curry mailing list -- curry_at_lists.rwth-aachen.de
To unsubscribe send an email to curry-leave_at_lists.rwth-aachen.de
Received on Mo Nov 19 2018 - 18:07:09 CET

This archive was generated by hypermail 2.3.0 : Do Mai 23 2024 - 07:15:13 CEST