
On Sun, Oct 17, 2010 at 3:25 PM, Bryan O'Sullivan
On Mon, Oct 11, 2010 at 1:12 PM, Malcolm Wallace
wrote: find find find (Text -> Bool) -> Text -> Maybe Text
Proposal: rename Text.findBy to Text.find.
I agree with the change of type, not so much with the naming. That's roughly my stance in the other cases, too.
What would the definition of a function of the form:
find :: (Text -> Bool) -> Text -> Maybe Text
look like? What sort of requirements would be placed on the input predicate? Maybe I have a failure of imagination, but that sounds like a tricky thing to get correct for all predicates. Antoine

On Sun, Oct 17, 2010 at 1:51 PM, Antoine Latter
What would the definition of a function of the form:
find :: (Text -> Bool) -> Text -> Maybe Text
look like?
Can you be more specific? I assume you mean that the only sensible return values are Nothing or the entire Text for which the predicate first returns True? (In other words, that this function doesn't actually seem to have a useful return type.)

On Sun, Oct 17, 2010 at 4:05 PM, Bryan O'Sullivan
On Sun, Oct 17, 2010 at 1:51 PM, Antoine Latter
wrote: What would the definition of a function of the form:
find :: (Text -> Bool) -> Text -> Maybe Text
look like?
Can you be more specific? I assume you mean that the only sensible return values are Nothing or the entire Text for which the predicate first returns True? (In other words, that this function doesn't actually seem to have a useful return type.)
Presumably find has more to do with text than: find p t = guard (p == t) (Just t) If you are searching for a... substring(?) then the value of the matching predicate could be very interesting. Eg. findName = find (all isAlpha) However, there are n^2 substrings in a string, so this function is O(P(n)n^2), where P(n) is the complexity of p. I can't say I would use such an expensive function very often -- there is usually a more specific algorithm that does what I need. Or maybe it finds prefixes? Then it should be called findPrefix probably. Oh and what if it finds more than one? Ordered by starting char? What if there multiple matches at the same starting char? So... I don't understand the specification of this function (the documentation in Data.Text is not very elucidating). Luke
participants (3)
-
Antoine Latter
-
Bryan O'Sullivan
-
Luke Palmer