I've almost got currypp working! It's installed, but reports "pakcs-frontend: /usr/lib/pakcs/lib/.curry/Prelude.uacy: openFile: permission denied (Permission denied) ERROR: i/o error: ERROR: user error: Illegal source program". I put more details on StackOverflow[1]. Thank you both! [1] https://stackoverflow.com/questions/53357361/specifying-default-rules-in-the... On Mon, Nov 19, 2018 at 12:07 PM Michael Hanus <mh@informatik.uni-kiel.de> wrote:
Hi Jeff,
maybe at some tome in the future, default rules, set functions etc will become part of the syntax of Curry and, thus, processed by the standard parser.
In the current "development" state, they are processed and implemented by the Curry preprocessor. This provides more flexibility for us (to play with different implementations) but allows also unintended uses. As a compromise, you might use CurryCheck, a property-based test tool which also perform some static code tests. For instance, running CurryCheck on your program generates the the message
Analyzing module 'Test'...
============================================================================== STATIC ERRORS IN PROGRAMS: 'Test' uses default rules or det. operations but not the preprocessor! Hint: insert line: {-# OPTIONS_CYMAKE -F --pgmF=currypp #-}
==============================================================================
Hence, you see what is missing...
CurryCheck can easily be installed by Curry's package manager:
cypm update && cypm install currycheck
Best regards,
Michael
On 11/19/18 4:49 AM, Jeffrey Brown wrote:
Awesome! Thanks, Sergio!
On Sun, Nov 18, 2018 at 10:24 PM <h7sa@pdx.edu <mailto:h7sa@pdx.edu>> wrote:
Hi Jeff
Answered on Stackoverflow. Good question. The tutorial should be clear about using the preprocessor. Sorry.
Sergio
On Sun, 18 Nov 2018, at 19:50, Jeffrey Brown <jeffbrown.the@gmail.com <mailto:jeffbrown.the@gmail.com>> wrote:
> 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>
> _______________________________________________ > curry mailing list -- curry@lists.rwth-aachen.de <mailto:curry@lists.rwth-aachen.de> > To unsubscribe send an email to curry-leave@lists.rwth-aachen.de <mailto:curry-leave@lists.rwth-aachen.de> >
https://lists.rwth-aachen.de/postorius/lists/curry.lists.rwth-aachen.de
-- 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>
-- 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>