=====
CS 111 - Week 5 Lecture 2 - 2024-09-26
=====

=====
TODAY WE WILL:
=====
*   announcements
*   intro to the idea of a DATA STRUCTURE
*   intro to Racket's list data type
*   prep for next class

*   should be working on Homework 4!
    *   at-least-first-attempts in by 11:59 pm TOMORROW

    *   submit frequently!

=====
*   a DATA STRUCTURE lets us have a SINGLE thing that
    contains MULTIPLE instances within a single
    collection-thing:

    *   a LIST of items!
    *   a STACK of items!
    *   an ARRAY of items!
    *   a TREE of items!
    *   a TABLE of items!
    ETC.!!

*   our FIRST data structure will be
    BSL Racket's list data type

*   note for the future:
    choosing an appropriate data structure for a problem
    makes writing a program for tht problem easier --

    Fred Brooks:
    "Representation is the essence of programming."

=====
BSL Racket list data type
=====
*   the list data type is built into Racket;

*   BSL Racket's list follows this data definition:

    DATA DEFINITION:
    a list is one of:
        *   empty
        *   (cons Anything list)

                           ^ self-reference

*   interesting things about this definition:
    *   a list can be empty!
    *   a list doesn't have a set pre-determined size
    *   a list can contain items of any, of different, types
    *   a list is defined self-referentially

*   see more about Racket list type,
    and some of its available built-in functions,
    in today's Racket file