As David has mentioned before on this list (and as I believe is mentioned in the book as well) the concerns of a library designer and a library user are somewhat different. Allowing the user of a library to provide a partial function makes development using that library easier because the user doesn't need to worry about potential match errors, or having to provide for each possible case in a match; they can just define their partial function over the values that they're interested in and rely upon the framework to do the right thing if no match is available.
Internally, Lift will check isDefinedAt whenever a partial function is used; this is an instance where the library designer takes on the responsibility for providing correct handling in the undefined case, and leaves the user free to handle whatever specific cases they wish. This gives maximum flexibility to the users of the framework, and allows them to focus on the problems they're trying to solve. Kris On Sat, Dec 27, 2008 at 1:18 AM, Marius <[email protected]> wrote: > > Personally I think Partial functions are great because you can chain > them ... see orEse. The other nice thing is pattern matching on > function arguments. For instance: > > val x: PartialFunction[String,String] = { > case "dog" => "bark" > } > > this PF is defined only if the argument is "dog". For anything else > isDefined function returns false.But whenever you want to call a PF > you should first call the isDefinedAt. If in the example above we'd > use a complete function calling it with something else then a dog > you'll get a MatchError at runtime. > > So you'd call the above > > val arg = "dog" > if (x.isDefinedAt(arg)) { > x(arg) > } > > Br's, > Marius > > On Dec 27, 2:29 am, "Charles F. Munat" <[email protected]> wrote: > > As a holiday gift to myself I am reading Programming in Scala from cover > > to cover. I've gotten as far as the pattern matching stuff and there's a > > discussion of partial functions. PiS says: "In general, you should try > > to work with complete functions whenever possible..." > > > > But I notice that the Lift code is filled with partial functions. > > They're all over the place. > > > > What is the benefit of using partial functions that outweighs the > > detriment of possible runtime errors? I'm trying to understand why > > partial functions might be useful. > > > > Thanks! > > Chas. > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Lift" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/liftweb?hl=en -~----------~----~----~----~------~----~------~--~---
