Look at the 'floor' function. It would simplify a lot of cases for

sure. But I suspect there is a better way to do that function as a

whole.

On 2009-11-06, at 12:31 AM, Nathan M. Holden wrote:

> I have been working on a small library that will typeset notes in

> LaTeX for

> me, since I tend to have haphazard typesetting while I write, but

> while I read

> I like to have standards.

>

> Anyways, I defined a datatype

>

> data Color = RGB {

> name :: [Char],

> r :: Float,

> g :: Float,

> b :: Float,

> matchText :: [[Char]],

> targetText :: [Char]}

> deriving(Show,Eq,Read)

>

> I wanted to be able to have a piece of code that said

>

> "\\definecolor{"++name++"}{rgb}{"++show r++","++show g++","++show

> b++"}"

>

> but because I have numbers below 0.1, it outputs as 2.0e-2, which is

> useless. I wrote a function that would output useful numbers, but

> it's REALLY

> bad Haskell:

>

> fToInt :: Float -> Int

> fToInt f = if f >= 10 then fToInt (f-10.0)

> else if (f >= 9) then 9

> else if (f >= 8) then 8

> else if (f >= 7) then 7

> else if (f >= 6) then 6

> else if (f >= 5) then 5

> else if (f >= 4) then 4

> else if (f >= 3) then 3

> else if (f >= 2) then 2

> else if (f >= 1) then 1 else 0

>

> It takes up 11 lines in a module that's only got 74! (128 if you

> count the

> module to translate the notes into a .tex file)

>

> how would I write this better?

> _______________________________________________

> Beginners mailing list

>

[hidden email]
>

http://www.haskell.org/mailman/listinfo/beginners