Skip to content

Latest commit

 

History

History
113 lines (81 loc) · 3.07 KB

0-Types.md

File metadata and controls

113 lines (81 loc) · 3.07 KB

Types

Although most of the code we've seen involves numbers, Racket is a programming language for working with all kinds of data (otherwise it would just be a glorified calculator).

Computer scientists refer to different forms of data as different types.

Here are some of the basic types in Racket, along with examples of function usage for each.

Numbers

Numbers are regular old numbers. They can be positive or negative, rational or irrational. In this course, you'll generally be working with the integers.

  • 10
  • -10
  • (sqrt 2)
; `max` returns the largest of a sequence of numbers
> (max 1 -5 99)
99

; `round` rounds a number down to the nearest integer
> (round 12.3)
12.0

Strings

Strings are text, surrounded by double quotation marks "".

  • "hello"
  • "How are you doing?"
  • "4482"
    • Why is this not a number? Because it has double quotes.
  • "\"You only live once!\" he screamed into the void."
    • Since double quotes delimit the beginning and end of a string, if we want to include actual double quotes inside our strings, we need to *escape- them with a backslash (\)
; `string-append` concatenates strings together
> (string-append "hello" "it's" "me")
"helloit'sme"

Booleans

Booleans (BOO-lee-uns) are logical values.

  • true
  • false
  • that's it there are no more
; `and` returns `true` if and only if both arguments are `true`
> (and true true)
true

; `or` returns `true` if and only if at least one argument is `true`
> (or true false)
true

; `not` returns the logical opposite of its argument
> (not true)
false

Images

Images are images, just like you're used to. You can generate images in DrRacket using the 2htdp/image teachpack, and you can bring in outside images, too.

  • (circle 50 "solid" "red")
  • picture of Rick Astley
    • If you haven't yet tried copy-pasting images into DrRacket for your programs, I'm sorry for your loss?
; we need to import the image library first
(require 2htdp/image)

> (overlay (circle 10 "solid" "red") (circle 20 "solid" "blue"))

red circle overlaid on blue circle

> (rotate 45 (ellipse 60 20 "solid" "green"))

green ellipse rotated 45 degrees

Defining Constants

We can define constants to simplify our programs. Constants are like variables, except their values can't be changed in the middle of a program.

The syntax for defining a constant is:

(define constant-name constant-value)

where constant-name is usually capitalized, by convention, and nstant-value is any expression or literal data type we've already seen.

(require 2htdp/image)

(define WIDTH 30)
(define HEIGHT (+ 9 1))
(define LAST-NAME "Lim")
(define BLOB (circle 50 "solid" "red"))

> (+ HEIGHT WIDTH)
40
> (string-append "My last name is " LAST-NAME)
"My last name is Lim"
> (overlay BLOB (rectangle 100 200 "solid" "gray"))

red circle on a gray rectangle