Code Monkey home page Code Monkey logo

mau's Introduction

Mau (WIP)

Mau это язык программирования уровня /b/

Ради маргинального интереса только

Наслаждайтес первоклассной смесью кириллицы и haskell-подобного синтаксиса, в отрыве от любых академических традиций и обязательств.

Особенности:

  • Статическая типизация
  • Статический вывод типов
  • λ-выражения (однострочные/многострочные)
  • Функций/процедур/методов -- нет.
  • Глобальных переменных нет. Есть глобальные константы.
  • Есть структуры (набор полей равных не лямбдам)
  • Есть интерфейсы (набор полей равных лямбдам, т.е. набор 'типовых' выражений)
  • Основные типы:
id типа описание пример литерала
ц16, ц32, ц64 целые числа -101
н16, н32, н64 натуральные числа 42
в32, в64 вещественные числа 3.1416926535898
строка просто набор рун "набо́р ру́н"
мсв!(размер :ц64, Т :имятипа) массив мсв("раз", "два")
век!(Т :имятипа) вектор (динамический массив) ("раз", "два", "три")
мап!(Т1 :имятипа, Т2 :имятипа) хэш таблица ("раз": 1, "два": 2)
\(Т1, ...) Тn λ-выражение (овеществлённая функция) \x у. x+у
ато!(Т :имятипа) атомик-ссылка ато(x)
счт!(Т :имятипа) указатель со счётчиком счт(x)
унк!(Т :имятипа) уникальный указатель унк(x)
пользовательский_тип структура Пёс(кличка: "Шарик")
  • Язык должен быть максимально простым и понятным, т.е.:
    • печаталь должно быть удобно
    • читать и отлаживать должно быть просто
    • результирующий должен быть интуитивно понятен при беглом чтении

TODO

  • Обработать определение структур
------- Объявление пользовательских типов -------
пусть Пёс (
   кличка : строка
)

пусть Такса : Пёс (
   вес_кг : в32
)

--- Начали перечисление 'типовых' λ-выражений ---
пусть для Пёс (
  голос := \ это, х: строка..
    принт(это.кличка + "говорит -- Гав!" + х);
  ;
)

-------- Через '::' обращение к 'типовым' λ-выражениям --------
--- Таким образом, 'а := А(); а.ф(2);' значит 'А::ф(а, 2);' ---
----- Это позволяет халявно эмулировать пространства имён -----
---------------------------------------------------------------
щенок :Пёс = Такса (кличка : "Шарик", вес_кг : 1.5);
щенок2 := щенок.как!(Такса);
щенок2.вес_кг;
щенок2.голос("Угаманись пака я тебя не покусал!");
Пёс::голос(щенок2, "Угаманись!");
  • Обработать определение шаблонов
шабаш!(
   статич_арг : ц32
   Т1         : имятипа
   Т2         : имятипа
) пусть Пара (
   первый: T1
   второй: Т2
)

шабаш!(Т : имятипа)
удвой : \(T)T = \ х. х + х;

mau's People

Contributors

dovobu avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.