>
> Да-а-а! Пример крутой! Как «оно» «догадалось» построить пример фильтрации
> по типу?!


Видимо, перенесла из какого-то другого языка программирования. Потому что в
книжках по рефалу такого точно нет.

Немножко обидно, что пример всё же не до конца правильный с точки зрения
типизации ([A] -> [Int]). Дело в том, что во второй версии спецификации про
типовые переменные сказано следующее:
TRefal supports type variables, denoted by a single uppercase letter, e.g.,
A, B, C, etc. Type variables can be used in function declarations to
indicate that the function works with generic types. For example: ```
Identity: A -> A { e.x = e.x; } ```

Поэтому [A], очевидно, означает список, каждый элемент которого имеет тип A.
А так как никакой иерархии типов в TRefal, к сожалению, не предусмотрено,
то нет и никакой возможности передать в нашу функцию FilterInt гетерогенный
список, в котором присутствуют как Int'ы, так и не Int'ы. Тем не менее, я
уверен, что если указать "гопоте" на этот недостаток, она быстро придумает
какой-нибудь адекватный механизм субтипизации :-)

Тут уж стоит задуматься: откуда он(о) не просто «знает» про Рефал, а
> еще «понимает» его, в смысле может содержательно варьировать синтаксис?


Видимо, зря мы относили способность содержательно варьировать синтаксис к
явным проявлениям высшей нервной деятельности. Оказалось, что этим можно
заниматься не приходя в сознание :-)

чт, 30 мар. 2023 г. в 23:03, Andrei Klimov andrei_AT_klimov.net <
[email protected]>:

> Да-а-а! Пример крутой! Как «оно» «догадалось» построить пример фильтрации
> по типу?!
>
> Тут уж стоит задуматься: откуда он(о) не просто «знает» про Рефал, а
> еще «понимает» его, в смысле может содержательно варьировать синтаксис?
>
> Угловые скобки и двоеточие мог позаимствовать из Хаскеля. Но для этого
> надо «понимать», что это родственные языки!
>
> Пишет выражения внутри [], «подразумевая» не один элемент списка, а его
> фрагмент. В принципе, это допустимая идея. Кажется, так сделано в
> Wolfram'овской Mathematica. Кстати, язык Wolfram — это фактически Рефал с
> синтаксисом, подкрученным под мат-формулы.
>
> Андрей
>
>
> On Thu, 30 Mar 2023 at 21:45, Sergei Skorobogatov
> s.yu.skorobogatov_AT_gmail.com <[email protected]> wrote:
>
>> Запрос удалось сформулировать с первой попытки.
>> Другое дело, что я ведь на этом не остановился, и вторая попытка принесла
>> гораздо более забавные результаты :-)
>>
>> Вторая попытка отличалась от первой добавлением следующей фразы:
>>
>>> Please, be extremely precise and pedantic. All parts of the
>>> specification should be consistent with each other and contain sample
>>> programs.
>>
>> В результате получился гораздо более симпатичный рефал, без элементов
>> синтаксиса C++.
>>
>> Мне, в частности, понравился вот такой пример:
>> FilterInt: [A] -> [Int] {
>> [] = []; [s.1<Int> : e.tail] = [s.1 : <FilterInt e.tail>]; [s.1 : e.tail]
>> = <FilterInt e.tail>; }
>>
>> Здесь мы видим generic-функцию, принимающую на вход произвольный список и
>> возвращающую список целых чисел. При этом "гопота" изобрела гарды по типу в
>> образцах (s.1<Int>), хотя никто её об этом специально не просил. Это, так
>> сказать, творческое осмысление задания: раз попросили добавить в рефал
>> статическую типизацию, значит неплохо бы ещё добавить динамическую проверку
>> типов :-)
>>
>> Завтра, наверное, попробую ещё раз. Мне пришло в голову, что "гопота",
>> видимо, не просекла, что списки в рефале можно разбирать с любой стороны, и
>> надо бы ей явно об этом напомнить.
>>
>> чт, 30 мар. 2023 г. в 21:11, Andrei Klimov andrei_AT_klimov.net <
>> [email protected]>:
>>
>>> Да, впечатляет! Сам я еще не научился пользоваться ChatGPT-ом (может,
>>> Сергей научит?), а с интересом изучаю диалоги, что выставили другие на
>>> просторах интернета.
>>>
>>> То, что некий «ИИ» может писать связный текст, хорошо структурированный
>>> по теме запроса (как здесь четко воспроизводится структура описания языка),
>>> — это, в принципе, может быть: на то он и содержит «базу знаний» как «базу
>>> шаблонов». Что удивительно — то, что он (она, оно) понимает задания,
>>> сформулированные короткими запросами.
>>>
>>> В связи с этим вопрос: Сергей, с какой попытки удалось сформулировать
>>> запрос, чтобы получить осмысленный ответ? Сколько «бреда» пришлось
>>> забраковать?
>>>
>>> Спрашиваю потому, что подозреваю, что всё выставляют удачные варианты
>>> беседы с ChatGPT, а муки поиска не показывают. Мои подозрения имеют смысл?
>>>
>>> Андрей
>>>
>>>
>>> On Thu, 30 Mar 2023 at 14:57, Sergei Skorobogatov
>>> s.yu.skorobogatov_AT_gmail.com <[email protected]> wrote:
>>>
>>>> Всем привет!
>>>>
>>>> Я тут поразвлекался с четвёртой версией ChatGPT, выдав ей следующее
>>>> задание:
>>>>
>>>>> Please, write a short specification for a new functional programming
>>>>> language. The language should preserve the syntax and semantics of Refal
>>>>> language as much as possible, but every function declaration in it must be
>>>>> typed.
>>>>
>>>>
>>>> Результат получился довольно забавный, и мне захотелось им поделиться:
>>>>
>>>> Title: TypedRefal - A Typed Functional Programming Language Based on
>>>> Refal
>>>>
>>>>
>>>>
  • Refal и ChatGPT 4... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
    • Re: Refal и ... Andrei Klimov andrei_AT_klimov . net
      • Re: Refa... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
        • Re: ... Andrei Klimov andrei_AT_klimov . net
          • ... Igor Adamovich i . a . adamovich_AT_gmail . com
          • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
            • ... Anton Korzh anton_AT_korzh . us
      • Re: Refa... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
        • Re: ... Arkady Klimov arkady . klimov_AT_gmail . com
          • ... nikolai . kondratiev_AT_gmx . de
            • ... Sergei M. Abramov
              • ... Sergei Skorobogatov s . yu . skorobogatov_AT_gmail . com
                • ... Andrei Klimov andrei_AT_klimov . net
                • ... Andrei Klimov andrei_AT_klimov . net
                • ... Sergei M. Abramov
                • ... Andrei Klimov andrei_AT_klimov . net

Ответить