# Booleans, Numbers, and Other Basic Types

You may want to refer to the reading on Boolean values and predicates and the reading on numbers before or while you work on this lab.

## Exercises

### Exercise 0: Preparation

a. If you haven't done so already, you may wish to skim the readings.

b. Start DrScheme.

### Exercise 1: Type Predicates

Fill in the following table (or as much as you think is appropriate)

 5 5.0 'five "five" list #t #f (cons 'a null) null 'null () `number?` `symbol?` `string?` `procedure?` `boolean?` `list?`

### Exercise 2: Empty lists

Which of the following does Scheme consider an empty list?

• `null`
• `'null`
• `()`
• `(list a)`
• `(list)`
• `'nothing`

### Exercise 3: Equality

Consider the following definitions

```(define alpha (list 'a 'b 'c))
(define beta (list 'a 'b 'c))
(define gamma alpha)
```

Determine which of the lists are `eq?`, `eqv?`, or `equal?`.

### Exercise 4: Reflection

Did you see anything surprising in the previous exercises?

### Exercise 5: What is `not`?

a. What type is `not`?

### Exercise 6: What is `not`? Revisited

The symbol `not` is the name of something, as you determined in the preceding exercise. However, the symbol itself, considered as a datum, is not a procedure. Does Scheme agree with this classification? How could one ask Scheme whether the symbol `not` is a procedure?

### Exercise 7: Combining Boolean Values

Fill in the following tables for each of the operations `and` and `or`.

`and`

 First argument Second argument Result `#f` `#f` `#f` `#t` `#t` `#f` `#t` `#t`

`or`

 First argument Second argument Result `#f` `#f` `#f` `#t` `#t` `#f` `#t` `#t`

### Exercise 8: Ranges

a. Write a Boolean expression that determines if the value named by `grade` is between 0 and 100, inclusive.

b. Test that expression using different values of `grade`.

### Exercise 9: Types of Numbers

Have DrScheme confirm that 3/4 is a rational number but not an integer and that the square root of -1 is a complex number but not a real number.

### Exercise 10: The Type of a Square Root

Confirm that the value DrScheme computes for `(sqrt 2)` is an inexact real that is also rational.

### Exercise 11: More Types of Numbers

As you've just seen, some kinds of numbers are subsets of other kinds of numbers. Determine the relationships between the various kinds of numbers.

### Exercise 12: A Large Number

Write a Scheme numeral for 1.507 times ten to the fifteenth power, as an exact number. Have Scheme evaluate the numeral.

### Exercise 13: Inexact Roots

a. Have DrScheme find the square of the square root of 2 and subtract 2 from the result.

b. Ideally, the difference should be 0; why isn't it?

c. How big is the difference?

d. Will you have the same problem if you start with 4? Why or why not?

### Exercise 14: Inexact Fractions

Write a Scheme numeral for one-third, as an inexact number. Have Scheme evaluate the numeral.

## Notes

Today's lab currently lacks notes.

## History

Monday, 4 September 2000 (Sam Rebelsky)

• Created

Disclaimer Often, these pages were created "on the fly" with little, if any, proofreading. Any or all of the information on the pages may be incorrect. Please contact me if you notice errors.