- Contemporary messages sorted: [ by date ] [ by thread ] [ by subject ] [ by author ] [ by messages with attachments ]

From: Lars Thomas Hansen <lth_at_ccs.neu.edu>

Date: Fri, 11 Aug 2000 21:12:33 -0400

*>Indeed
*

*>
*

*> STk> (real? (truncate 5.3))
*

*> #t
*

*>
*

*>So, truncate isn't returning an integer.
*

That is a misconception about how numbers behave in Scheme. In

particular,

*> (integer? 1.0)
*

#t

*> (real? 1)
*

#t

In the first case, 1.0 is clearly an integer because its fractional part

is zero. In the second case, 1 is clearly real because its imaginary

part is zero.

One distinction Scheme makes is based on the notion of exactness: only

exact integers can be used to index into vectors. 1.0 is an inexact

integer; 1 is an exact integer. TRUNCATE returns an integer, but the

result is inexact if the argument is inexact. Conversely the result is

exact if the argument is exact:

*> (truncate 3/2)
*

1

The procedure inexact->exact is used to convert inexact numbers to

exact numbers, eg

*> (inexact->exact 1.5)
*

3/2

The Report discusses the distinctions and the numeric tower in detail;

it isn't something one 'gets' immediately but it is necessary to study

it to understand how numbers work in Scheme.

(Those examples may or may not work that way in STk, which may not

have exact rational numbers (fractions)).

--lars

Received on Sat Aug 12 2000 - 03:12:53 CEST

Date: Fri, 11 Aug 2000 21:12:33 -0400

That is a misconception about how numbers behave in Scheme. In

particular,

#t

#t

In the first case, 1.0 is clearly an integer because its fractional part

is zero. In the second case, 1 is clearly real because its imaginary

part is zero.

One distinction Scheme makes is based on the notion of exactness: only

exact integers can be used to index into vectors. 1.0 is an inexact

integer; 1 is an exact integer. TRUNCATE returns an integer, but the

result is inexact if the argument is inexact. Conversely the result is

exact if the argument is exact:

1

The procedure inexact->exact is used to convert inexact numbers to

exact numbers, eg

3/2

The Report discusses the distinctions and the numeric tower in detail;

it isn't something one 'gets' immediately but it is necessary to study

it to understand how numbers work in Scheme.

(Those examples may or may not work that way in STk, which may not

have exact rational numbers (fractions)).

--lars

Received on Sat Aug 12 2000 - 03:12:53 CEST

*
This archive was generated by hypermail 2.3.0
: Mon Jul 21 2014 - 19:38:59 CEST
*