schm-reduplication(意第绪语)形态学过程

schm-reduplication (yiddish) morphological process

根据定义,schm-reduplication 是一种重复形式,其中原始单词或其第一个音节(基础)与副本(重复项)重复,开头为shm-.

baby -> schmaby
sprinkler -> schminkler
artist -> schmartist

因此,直到单词的第一个元音之前的所有字母都被删除,并在其前面加上 'schm'。

如何将其转化为代码?

我在想..

(1) 获取列表。 (2) 删除所有元素,直到检测到第一个元音。所以我认为这会很有用:vowel(X):- member(X,[a,e,i,o,u]). 所以我需要将第一个元素扫描到末尾,一旦我到达元音,我就会保留它并在前面添加一个 'schm'.

我在删除元音部分之前的所有元素时遇到问题。有人可以帮忙吗?

我有:

yiddish(A,B):-
append([s,c,h,m],A,B).

?- yiddish([h,o,u,s,e],X).
X = [s, c, h, m, h, o, u, s, e].

您的架构可以像

一样实施
yiddish(A,B) :- after_first_vowel(A,AFV), append([s,c,h,m],AFV,B).

% here some decision should be taken about data correctness
after_first_vowel([C|Cs],[C|Cs]) :- memberchk(C,[a,e,i,o,u]), !.
after_first_vowel([_|Cs],Rs) :- after_first_vowel(Cs,Rs).

基础测试:

?- atom_chars(baby,Cs),yiddish(Cs,L).
Cs = [b, a, b, y],
L = [s, c, h, m, a, b, y]