Quando il mio amico ha iniziato a studiare Prolog a scuola, l'ho preso in giro per imparare una lingua inutile. Tuttavia, mi ha mostrato alcune cose che non ho mai nemmeno immaginato possibile; Voglio sapere da dove viene questa tecnica.Multithreading in ... lingue funzionali? (Prolog)
La tecnica è questa:
permutation(List) :-
isAMember(X, List),
deleteFirstElement(X, List, Substring),
% and so on
In questo codice, isAMember(X, List)
è una funzione che restituisce true se X
è in List
. Tuttavia, fino a questo punto, X
non è definito come variabile - , quindi il programma genererà un gruppo di nuovi thread, uno per ogni possibile valore di isAMember(X, List)
true, true, e continuerà da lì.
Questo ci consente di creare un algoritmo multi-thread nel modo più semplice ed elegante che avrei mai potuto immaginare possibile.
Quindi la mia domanda è: Questa specifica è Prolog o una caratteristica di tutti i linguaggi logici e/o funzionali? Inoltre, dove posso imparare più incredibili tecniche di multithreading come questo - questo è sicuramente il futuro della programmazione.
Direi che la programmazione è iniziata in questo modo! Una macchina di Turing non deterministica ha questo concetto. –
Prolog non è un prodotto funzionale. È specializzato nella risoluzione di problemi logici. – Francis