Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
7 ?- concat(a,bc,D).
D = abc
8 ?- concat(A,B,abc).
A = '',
B = abc;
A = a,
B = bc;
A = ab,
B = c;
A = abc,
B = ''
9 ?- concat(a,bc,abc).
Yes
% S - все подстроки Str
substr(S, Str) :-
concat(_, S1, Str),
concat(S, _, S1).
% S2 - все подстроки длины 2
substr2(S2, Str) :-
substr(S2, Str),
atom_length(S2, 2).
* This source code was highlighted with Source Code Highlighter.10 ?- substr2(S2,abbc).
S2 = ab;
S2 = bb;
S2 = bc;
No
а C не быстрее, C — более explicit, так же, как assembler vs. CM
т.е. я вообще не считаю, что с императивными языками стоит возиться
ну в самом деле, не будете же вы делать оптимизацию ассемблерного кода, когда эти оптимизации проще делать на уровне, скажем, C++
в статье как раз рассказывается про оптимизации на высоком уровне (частичные вычисления)
потому что анализировать функциональный код проще
Three Futamura Projections и не только