On Tue, Jun 4, 2013 at 2:12 PM, David Nolen <dnolen.li...@gmail.com> wrote:
> I've looked at extractors a little bit, but I would need to investigate > further. Does this offer any more power than supporting arbitrary function > application in patterns? > The only advantage to function application is that you could conceivably memoize the results of the unapply because they are "not supposed" to be side-effecting. > > Also, I'm unlikely to dive into any feature addition related issues until > all these pressing bugs in JIRA are squashed. > No worries. I will not open a ticket at this time. I just want to put the idea out there. > > > On Tue, Jun 4, 2013 at 4:17 PM, David Pollak < > feeder.of.the.be...@gmail.com> wrote: > >> Howdy David & Co., >> >> One of the *really* nice things about Scala's pattern matching is the >> ability to extend pattern matching using extractors. The research is >> presented in >> http://lampwww.epfl.ch/~emir/written/MatchingObjectsWithPatterns-TR.pdf >> >> The practical aspects allow testing and transforming at pattern matching >> time. For example: >> >> object AsInt { >> def unapply(in: String): Option[Int] = try {Some(in.toInt)} catch {case >> e: Exception => None} >> } >> >> foo match { >> case AsInt(number) => number + 1 >> case _ => 0 >> } >> >> More importantly, one can use extractors to test external things: >> >> object AsJsonFile { >> def unapply(fileName: String): Option[JSON] = ... // find the file, >> load it and parse it as JSON >> } >> >> What are your thoughts on adding extractors to the pattern matcher? >> >> Thanks, >> >> David >> >> -- >> Telegram, Simply Beautiful CMS https://telegr.am >> Lift, the simply functional web framework http://liftweb.net >> Follow me: http://twitter.com/dpp >> Blog: http://goodstuff.im >> >> -- >> -- >> You received this message because you are subscribed to the Google >> Groups "Clojure" group. >> To post to this group, send email to clojure@googlegroups.com >> Note that posts from new members are moderated - please be patient with >> your first post. >> To unsubscribe from this group, send email to >> clojure+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/clojure?hl=en >> --- >> You received this message because you are subscribed to the Google Groups >> "Clojure" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to clojure+unsubscr...@googlegroups.com. >> For more options, visit https://groups.google.com/groups/opt_out. >> >> >> > > -- > -- > You received this message because you are subscribed to the Google > Groups "Clojure" group. > To post to this group, send email to clojure@googlegroups.com > Note that posts from new members are moderated - please be patient with > your first post. > To unsubscribe from this group, send email to > clojure+unsubscr...@googlegroups.com > For more options, visit this group at > http://groups.google.com/group/clojure?hl=en > --- > You received this message because you are subscribed to the Google Groups > "Clojure" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to clojure+unsubscr...@googlegroups.com. > For more options, visit https://groups.google.com/groups/opt_out. > > > -- Telegram, Simply Beautiful CMS https://telegr.am Lift, the simply functional web framework http://liftweb.net Follow me: http://twitter.com/dpp Blog: http://goodstuff.im -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.