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-th=
e-curry-language-why-and-how
--
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
https://lists.rwth-aachen.de/postorius/lists/curry.lists.rwth-aachen.de
Received on Mo Nov 19 2018 - 18:07:09 CET