[Haskell-cafe] Re: Best way to write endsWith (RESOLVED)

John Ky newhoggy at gmail.com
Sun Oct 22 02:26:46 EDT 2006


Hi,

Thanks all.  I learnt quite a few things:

1. There was already an equivalent builtin function.
2. That the best function argument order is the least surprising one.
3. That I can choose my preferred function order by changing the name of the
function.
4. That the most efficient way of doing something in Haskell can be so
short.
5. Operators really are awesome.

-John

On 10/22/06, John Ky <newhoggy at gmail.com> wrote:
>
> Hello,
>
> I have this function here:
>
> > endsWith :: Eq a => [a] -> [a] -> Bool
> > endsWith suffix list
> >   | lengthDifference < 0 = False
> >   | otherwise = (drop lengthDifference list) == suffix
> >   where lengthDifference = (length list) - (length suffix)
>
> Would this be the preferred function argument order?  Or is the reverse
> (ie. endsWith list suffix) better?
>
> I like being able to say "abc" `endsWith` "c", but I also like to be able
> to say map (endsWith 't') ["cat", dog"] but I can't have both.
>
> By the way, is there a better way to write this function to be clearer and
> more efficient?
>
> Thanks
>
> -John
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20061022/ee33d3d2/attachment.htm


More information about the Haskell-Cafe mailing list