Что такое define-struct в Racket и почему в нем нет переменных?

На одном из моих курсов по информатике в университете нам приходится работать с Racket. Большую часть своего времени программирования перед университетом я провел с PHP и Java, а также с JavaScript. Я знаю, что Racket — это функциональный язык программирования, как и JavaScript (Edit:. Конечно, это не так. Но я чувствовал, что занимаюсь с ним «функциональным» программированием, что после просмотра ответов является неправильным восприятием. )Но я до сих пор не понимаю некоторые фундаментальные характеристики Racket(Scheme).

  1. Почему нет «настоящих» переменных? Почему все функции в Racket/Scheme? Почему разработчики языка не включили их?

  2. Что такое define-struct? Это функция? Это класс? Я почему-то, из-за моего фона PHP, всегда думаю, что это класс, но это не может быть действительно правильно.

Мой вопрос заключается в том, что я хочу понять концепцию языка. Я лично до сих пор думаю, что это действительно странно и не похоже ни на что, с чем я работал раньше, поэтому мой мозг пытается сравнить его с JavaScript, но мне это кажется совершенно другим. Парали/отличия от JavaScript очень помогли бы!

5
задан wowpatrick 10 April 2012 в 16:46
поделиться