Добрый вечер, Бойко!

«Рефал ведь слабо типизированный язык…»

Распространённая терминологическая ошибка, перепутана слабая и динамическая 
типизация.

Сильно типизированный язык — язык, запрещающий неявные преобразования. Слабо 
типизированный язык — язык, разрешающий неявные преобразования. JavaScript — 
слабо типизированный язык, поскольку в нём можно сложить строку с числом. А 
Рефал — сильно типизированный язык, в нём нет неявных преобразований. Число 0 
может сопоставиться только с образцом 0, а не '0' (character) или "0" 
(составной символ).

А с тем, что Рефал — динамически типизированный, я не спорю.

Есть зачаток статической типизации в Рефале Плюс — форматы функций, но это 
только зачаток.

Ликбез по типизациям: https://habr.com/ru/post/161205/


Хорошая статическая типизация для Рефала даже первого порядка — интересная 
задача. Надеюсь, когда-нибудь решу.

Статическая типизация Рефала обсуждалась в этой рассылке в незапамятные времена 
(KOI8-R):

https://mazdaywik.github.io/direct-link/refal-botik-ru/refal/0005.html
https://mazdaywik.github.io/direct-link/refal-botik-ru/refal/0007.html
https://mazdaywik.github.io/direct-link/refal-botik-ru/refal/0222.html


«А избежание необходимости усложнений Рефала, на мой взгляд, можно постичь, 
если реализовать небольшое его подмножество в виде библиотеки на ANSI C.»

ИМХО тут надо брать пример с Lua.


С уважением,
Александр Коновалов


-----Original Message-----
From: Boyko Bantchev boykobb_AT_gmail.com [mailto:refal@botik.ru] 
Sent: Sunday, December 1, 2019 12:52 PM
To: Александр Гусев <gusev_aleksa...@mail.ru>; refal@botik.ru
Subject: Re: Нужна ли "Ленинская простота" в Рефале?

> ... Если ещё немного усложнить язык - получится Хаскелл, зачем тогда Рефал?

Получить Haskell или вообще язык с системой типов Hindley–Milner из Рефала не 
то что с небольшими усложнениями, а вообще нереально ожидать.  Рефал ведь слабо 
типизированнъй язык, тогда как с Hindley–Milner-овскими языками как раз 
наоборот.  И механизмы сопоставления у Рефала и у Hindley–Milner-а совсем 
разные.
У каждого свои преимущества.

А избежание необходимости усложнений Рефала, на мой взгляд, можно постичь, если 
реализовать небольшое его подмножество в виде библиотеки на ANSI C.  Это даст, 
с одной стороны, компилятор, интерпретатор и REPL этого минимального и совсем 
простого Рефала для непосредственных применений, в том числе для изучения, 
обучения и всяких хобби занятий.
С другой стороны, через интерфейс к ANSI C будет обеспечена возможность 
сочетать программирование на Рефале с программированием на почти любом другом 
языке.  На этих других языках, а не в самом Рефале, и будут реализоваться все 
желательные языковые расширения.

И то, и другое увеличило бы, помимо прочего, практическую доступность Рефала.  
Зависимости от операционной системы, например, вообще не будет — одна 
реализация языка на все системы, где есть C.

Ещё одна возможность — реализовать тот самый небольшой Рефал в виде библиотеки 
на JavaScript, что обеспечило бы применимость и в вебприложениях, и (через 
Node) во многих других.

Может, я что-то упускаю из вида, но именно такой путь развития Рефала мне 
кажется очень перспективным.
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
  • Re:... Eisymont Leonid verger-lk_AT_yandex . ru
    • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
      • ... Eisymont Leonid verger-lk_AT_yandex . ru
        • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
          • ... Eisymont Leonid verger-lk_AT_yandex . ru
            • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Александр Гусев gusev_aleksandr_AT_mail . ru
              • ... Boyko Bantchev boykobb_AT_gmail . com
              • ... Sergei M. Abramov
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Boyko Bantchev boykobb_AT_gmail . com
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Boyko Bantchev boykobb_AT_gmail . com
              • ... Arkady Klimov arkady . klimov_AT_gmail . com
              • ... Александр Коновалов a . v . konovalov87_AT_mail . ru
              • ... Arkady Klimov arkady . klimov_AT_gmail . com
              • ... Александр Гусев gusev_aleksandr_AT_mail . ru
              • ... Boyko Bantchev boykobb_AT_gmail . com
              • ... Александр Гусев gusev_aleksandr_AT_mail . ru

Ответить