[1] thoroughly explains why
[2,3] based on How To Design Programs [4] is a much better intro; you should read SICP after completing this
[1] https://www2.ccs.neu.edu/racket/pubs/jfp2004-fffk.pdf
[2] https://www.edx.org/course/how-code-simple-data-ubcx-htc1x
[3] https://www.edx.org/course/how-code-complex-data-ubcx-htc2x
[4] https://htdp.org/
[1] thoroughly explains why
[2,3] based on How To Design Programs [4] is a much better intro; you should read SICP after completing this
[1] https://www2.ccs.neu.edu/racket/pubs/jfp2004-fffk.pdf
[2] https://www.edx.org/course/how-code-simple-data-ubcx-htc1x
[3] https://www.edx.org/course/how-code-complex-data-ubcx-htc2x
[4] https://htdp.org/