LINUX.ORG.RU

Shen / QII lisp


0

2

%USERNAME% ты тыкал/делал что-нибудь на этом языке?

Ссылка на сайт языка

Какой experience?

Для Ъ:

Фичи языка:

pattern-matching:

(define member
    _ [] -> false
    X [X | _] -> true
    X [_ | Y] -> (member X Y))

каррирование/partial application:

> (* 2)
#<FUNCTION :LAMBDA (#:Y19250) (multiply #:Y19249 #:Y19250)>

> ( (* 2) 2)
4

статическая типизация:

(define total
    {(list number) --> number}
    [] -> 0
    [X | Y] -> (+ X (total Y)))

(define total-tst
-> (total [1 2 3 4 'a]))

\* выключим static type checking *\

> (tc -)
false : boolean

> (total-tst)
COERCE: 'a is not a real number

\* включим static type checking *\

> (tc +)
true

> (total-tst)
type error

Встроенная машина вывода (prolog):

(48-) (defprolog member
X [X | _] <--;
X [_ | Y] <-- (member X Y);)
member

(51-) (prolog? (member 1 [1 2]))
true

(52-) (prolog? (member 0 [1 2]))
false

(53-) (prolog? (member X [1 2]))
true

(54-) (prolog? (member X [1 2]) (return X))
1

Задание пользовательских типов данных (в т/ч рекурсивных) при помощи sequent calculus

(15+) (datatype binary

 if (element? X [0 1])
 _____________
 X : zero-or-one;
 
 X : zero-or-one;
 __________________
 [X] : binary;

 X : zero-or-one; Y : binary;
 ____________________________
[X | Y] : binary;

X : zero-or-one, [Y | Z] : binary >> P;
___________________________________________
[X Y | Z] : binary >> P;)
binary 

(16+) (define complement
\calculates the complement of a binary number\
{binary --> binary}
[0] -> [1] 
[1] -> [0] 
[1 N | X] -> [0 | (complement [N | X])] 
[0 N | X] -> [1 | (complement [N | X])]) 
complement : (binary --> binary)

(3+) (complement [0 1 0 1])
[1 0 1 0] : binary
★★★★★

Последнее исправление: x4DA (всего исправлений: 1)

ты тыкал/делал что-нибудь на этом языке?

на нём - практически ничего

Какой experience?

давным давно помог портировать его на очередной CL (даже уже и не вспомню на какой, просто было интересно)

по мне, так этот «китайский» хуже хаскела. к тому-же, пробегала новость, будто очередную версию собирались переписать на питон (если мне память не изменяет)

yyk ★★★★★
()
Ответ на: комментарий от yyk

пробегала новость, будто очередную версию собирались переписать на питон (если мне память не изменяет)

Не переписали с лиспа на сам Qi. А потом собрались транслировать в минимальное подмножество лиспа, питона и.т.д

antares0 ★★★★
()
Ответ на: комментарий от Rastafarra

если верить лисперам, новый язык для этого, перечисленного, не нужен, достаточно макр.

Ну н был набором наборм макросов и написаным на CL же прологом. А потом автор захотел «истино свой» язык.

antares0 ★★★★
()
Ответ на: комментарий от Rastafarra

Надо скастовать лисперов, пусть поделятся опытом, какие фичи нужны, а какие - нет.

x4DA ★★★★★
() автор топика
Ответ на: комментарий от antares0

Кстати, идея минимального языка - kernel lisp выглядит вполне стоящей.

x4DA ★★★★★
() автор топика

Там какие-то проблемы с лицензией, если не ошибаюсь. И несколько лет назад автор написал унылое письмо, что у лиспа нет будущего, но потом одумался и продолжил работу.

bik ★★
()
Ответ на: комментарий от bik

Лицензия там, вроде бы, свобоная.

Единственно, что они хотят - чтобы все реализации соответствовали их спецификации на язык.

x4DA ★★★★★
() автор топика

%USERNAME% ты тыкал/делал что-нибудь на этом языке?

зачем? напоигратса?

Чем не устраивает язык промышленного программирования — Common Lisp?

gensym ★★
()
Ответ на: комментарий от gensym

Да, напоиграться.

Тем более, если не нужны промышленные фичи, то вполне можно на нем что-нибудь написать.

x4DA ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.