# Lesson 6 Intro

## Introduction

In this lesson, we begin our exploration of generic operators—procedures that can be called on different data types. The basic idea behind generic operators is that we have different types of data that are "intelligent"—they know how to manipulate themselves. Procedures are then allowed to be "stupid"—they don't need to know anything about data types and somehow it still works out.

We'll then introduce Racket-1, a simple Racket interpreter written in Racket. While it cannot do all the things Racket can, it does demonstrate the basic components that make up an interpreter.

## Prerequisites

You should have a good understanding of calc.rkt and data abstraction.