[Haskell-cafe] Trying to write 'safeFromInteger'

Neil Mitchell ndmitchell at gmail.com
Thu Apr 9 05:12:16 EDT 2009


>>> That seems a really weird way to write it! Who decided all auxiliary
>>> functions should be called go? (I think I'm blaming dons) - why not:
>>>
>>> sffi :: (Integral a,Num a) => Integer -> Maybe a
>>> sffi n | toInteger n2 == n = Just n2
>>>        | otherwise = Nothing
>>>     where n2 = fromInteger n
>>
>> I know I was too lazy to clean it up :-P
>> ( I also blame Dons for 'go' )
>
> I think the Common Lisp community tends to use 'foo-aux' instead of
> 'go' for these sort of axillary functions.  But, then in Haskell we
> can't use hyphen as an identify character and underscore is not
> popular.  For this reason I started using fooAux in Haskell, but after
> learning that a single quote is valid identifier character I started
> using foo'.
>
> Other than using go and foo', what do people use in Haskell?

I use f, if I need several auxiliary functions I start at f and work
my way up alphabetically. I tend to go back to f2 if I go past h. Be
grateful you don't have to maintain my code :-)

Thanks

Neil

PS. Here is some code from the filepath library I wrote, illustrating
how fantastic my naming scheme looks. (I think if I was writing it
today I'd have used a list comprehension for validChars, eliminating
f.)

makeValid path = joinDrive drv $ validElements $ validChars pth
    where
        (drv,pth) = splitDrive path

        validChars x = map f x
        f x | x `elem` badCharacters = '_'
            | otherwise = x

        validElements x = joinPath $ map g $ splitPath x
        g x = h (reverse b) ++ reverse a
            where (a,b) = span isPathSeparator $ reverse x
        h x = if map toUpper a `elem` badElements then a ++ "_" <.> b else x
            where (a,b) = splitExtensions x


More information about the Haskell-Cafe mailing list