Problems with square root...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Problems with square root...

Daniel Carrera-2
Hey,

The sqrt function is not doing what I want. This is what I want:

round sqrt(2)

The problem is that sqrt() returns a "Floating" value and round wants a
"ReacFrac":
--//--
*Main> round sqrt(2)
<interactive>:1:0:
     No instances for (RealFrac (a -> a), Integral (t -> a1))
       arising from use of `round' at <interactive>:1:0-4
     Probable fix:
       add an instance declaration for (RealFrac (a -> a), Integral (t
-> a1))
     In the definition of `it': it = round sqrt (2)
*Main>
--//--

I'm trying to figure out how to turn a Float into a RealFrac so I can
pass it to 'round'. Any ideas?

Daniel.
--
      /\/`) http://oooauthors.org
     /\/_/  http://opendocumentfellowship.org
    /\/_/
    \/_/    I am not over-weight, I am under-tall.
    /
_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-cafe
Reply | Threaded
Open this post in threaded view
|

Re: Problems with square root...

Daniel Carrera-2
Daniel Carrera wrote:
> Hey,
>
> The sqrt function is not doing what I want. This is what I want:
>
> round sqrt(2)

Sigh... never fails. Spend an hour trying to solve a problem, and a
minute after you write to the list you find the solution. I need
brackets around sqrt. I'm surprised though. I don't understand why it
dosn't work without brackets.

Daniel.
--
      /\/`) http://oooauthors.org
     /\/_/  http://opendocumentfellowship.org
    /\/_/
    \/_/    I am not over-weight, I am under-tall.
    /
_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-cafe
Reply | Threaded
Open this post in threaded view
|

Re: Problems with square root...

Radu Grigore
On 12/21/05, Daniel Carrera <[hidden email]> wrote:

> > round sqrt(2)
> I don't understand why it dosn't work without brackets.

Function application is left associative in Haskell.


--
regards,
 radu
http://rgrig.blogspot.com/

_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-cafe
Reply | Threaded
Open this post in threaded view
|

Re: Problems with square root...

Hal Daume III-2
In reply to this post by Daniel Carrera-2
> Sigh... never fails. Spend an hour trying to solve a problem, and a
> minute after you write to the list you find the solution. I need
> brackets around sqrt. I'm surprised though. I don't understand why it
> dosn't work without brackets.

because "x y z" parses as "(x y) z", so "round sqrt 2" parses as "(round
sqrt) 2" and "round sqrt" doesn't make sense.  "x(y)" doesn't mean
necessarily "apply y to x" as it does in C.  parens only are used as they
are in math to separate stuff.

--
 Hal Daume III                                   | [hidden email]
 "Arrest this man, he talks in maths."           | www.isi.edu/~hdaume

_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-cafe
Reply | Threaded
Open this post in threaded view
|

Re: Problems with square root...

Jon Fairbairn
In reply to this post by Daniel Carrera-2
On 2005-12-21 at 18:10GMT Daniel Carrera wrote:

> Daniel Carrera wrote:
> > Hey,
> >
> > The sqrt function is not doing what I want. This is what I want:
> >
> > round sqrt(2)
>
> Sigh... never fails. Spend an hour trying to solve a problem, and a
> minute after you write to the list you find the solution. I need
> brackets around sqrt. I'm surprised though. I don't understand why it
> dosn't work without brackets.

Elementary syntax. Function application needs no parentheses
and associates left, so

   sqrt 2

is fine, and what you wrote means

  (round sqrt) 2

whereas what you want is

   round (sqrt 2)


--
Jón Fairbairn                              Jon.Fairbairn at cl.cam.ac.uk


_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-cafe
Reply | Threaded
Open this post in threaded view
|

Re: Problems with square root...

Tomasz Zielonka
In reply to this post by Daniel Carrera-2
On Wed, Dec 21, 2005 at 06:10:56PM +0000, Daniel Carrera wrote:

> Daniel Carrera wrote:
> >Hey,
> >
> >The sqrt function is not doing what I want. This is what I want:
> >
> >round sqrt(2)
>
> Sigh... never fails. Spend an hour trying to solve a problem, and a
> minute after you write to the list you find the solution. I need
> brackets around sqrt. I'm surprised though. I don't understand why it
> dosn't work without brackets.

In Haskell parentheses are not part of function call syntax, unlike
many languages like C, Pascal or Java. The role of parentheses in
expressions is only for grouping and disambiguation. What you typed is
actually equivalent to

    round sqrt 2

which in turn is equivalent to

    ((round sqrt) 2)

because function application is left-associative.

Best regards
Tomasz

--
I am searching for a programmer who is good at least in some of
[Haskell, ML, C++, Linux, FreeBSD, math] for work in Warsaw, Poland
_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-cafe
Reply | Threaded
Open this post in threaded view
|

Re: Problems with square root...

Daniel Carrera-2
In reply to this post by Radu Grigore
Radu Grigore wrote:
>>I don't understand why it dosn't work without brackets.
>
> Function application is left associative in Haskell.

Ah. I implicitly assumed right-association (it works in Perl ;) )

Thanks.
--
      /\/`) http://oooauthors.org
     /\/_/  http://opendocumentfellowship.org
    /\/_/
    \/_/    I am not over-weight, I am under-tall.
    /
_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-cafe
Reply | Threaded
Open this post in threaded view
|

Re: Problems with square root...

Mark Goldman
In reply to this post by Daniel Carrera-2
nitpicky detail:

() <- Parenthesis
{} <- Braces
[] <- Brackets

Sorry to be pedantic, but using the wrong terminology confuses me and
I'm sure others as well.

On 12/21/05, Daniel Carrera <[hidden email]> wrote:

> Daniel Carrera wrote:
> > Hey,
> >
> > The sqrt function is not doing what I want. This is what I want:
> >
> > round sqrt(2)
>
> Sigh... never fails. Spend an hour trying to solve a problem, and a
> minute after you write to the list you find the solution. I need
> brackets around sqrt. I'm surprised though. I don't understand why it
> dosn't work without brackets.
>
> Daniel.
> --
>       /\/`) http://oooauthors.org
>      /\/_/  http://opendocumentfellowship.org
>     /\/_/
>     \/_/    I am not over-weight, I am under-tall.
>     /
> _______________________________________________
> Haskell-Cafe mailing list
> [hidden email]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


--
"50% of marriages today end in divorce, the other 50% end in death.
Which would you rather have?"
_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-cafe
Reply | Threaded
Open this post in threaded view
|

Re: Problems with square root...

Jared Updike
MG> () <- Parenthesis
MG> {} <- Braces
MG> [] <- Brackets
MG> Sorry to be pedantic, but using the wrong terminology confuses me and
MG> I'm sure others as well.

This is true for Haskell, but Daniel is correct if he is calling ()
"Brackets" because they are, in British English, right? (Just like '.'
is a 'period' in US, but it is a 'full stop' in UK.). Of course,
English /= Haskell so in Haskell I guess they are called Parenthesized
Expressions (in the Haskell report
http://www.haskell.org/onlinereport/exps.html).

To be extra pedantic, I would call {} Curly Braces (or Curly Brackets,
or squiggly brackets, or squiggles, or ... just use layout and
whitespace!) and I would call [] Square Brackets. Then no one gets
confused.

Cheerio,
  Jared

P.S. IANAA = I am an American, so I could very well be wrong about
British English!

> On 12/21/05, Daniel Carrera <[hidden email]> wrote:
> > Daniel Carrera wrote:
> > > Hey,
> > >
> > > The sqrt function is not doing what I want. This is what I want:
> > >
> > > round sqrt(2)
> >
> > Sigh... never fails. Spend an hour trying to solve a problem, and a
> > minute after you write to the list you find the solution. I need
> > brackets around sqrt. I'm surprised though. I don't understand why it
> > dosn't work without brackets.
> >
> > Daniel.
> > --
> >       /\/`) http://oooauthors.org
> >      /\/_/  http://opendocumentfellowship.org
> >     /\/_/
> >     \/_/    I am not over-weight, I am under-tall.
> >     /
> > _______________________________________________
> > Haskell-Cafe mailing list
> > [hidden email]
> > http://www.haskell.org/mailman/listinfo/haskell-cafe
> >
>
>
> --
> "50% of marriages today end in divorce, the other 50% end in death.
> Which would you rather have?"
> _______________________________________________
> Haskell-Cafe mailing list
> [hidden email]
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>


--
[hidden email]
http://www.updike.org/~jared/
reverse ")-:"
_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-cafe
Reply | Threaded
Open this post in threaded view
|

Re: Problems with square root...

Daniel Carrera-2
In reply to this post by Mark Goldman
Mark Goldman wrote:
> nitpicky detail:
>
> () <- Parenthesis
> {} <- Braces
> [] <- Brackets
>
> Sorry to be pedantic, but using the wrong terminology confuses me and
> I'm sure others as well.

Being pedantic can be fun :)

The Macquarie Dictionary, which is the official dictionary in Australia,
says that () are brackets. It says that they are "also called"
parentheses or a "round bracket", if you need to distinguish between
them and square brackets [], curly brackets {}, or angle brackets <>,
and the definition for parenthesis is "the upright brackets ()".

Also, I believe, UK English (and International English) uses the term
brackets that way, but I'd have to check online to make sure; I don't
have a UK dictionary on me right this minute.

Cheers,
Daniel.
--
      /\/`) http://oooauthors.org
     /\/_/  http://opendocumentfellowship.org
    /\/_/
    \/_/    I am not over-weight, I am under-tall.
    /
_______________________________________________
Haskell-Cafe mailing list
[hidden email]
http://www.haskell.org/mailman/listinfo/haskell-cafe