На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> ПРОЛОГ ту ЛИСП
    Есть программа на Прологе, работающая со списками (если в первом есть элементы второго, то заменить их на элементы третьего


    domains
    list = symbol*

    predicates
     n_member(symbol,list,integer)
     zamena(list,list,list,list)
     
    clauses
     n_member(X,[X|_],1).
     n_member(X,[_|T],N):-n_member(X,T,N1),N=N1+1.
    zamena([],_,_,[]).
    zamena([B|AL],[B|BL],[C|CL],[C|DL]):-!,
    zamena(AL,BL,CL,DL).
    zamena([A|AL],[_|BL],[_|CL],[A|DL]):-!,
    zamena(AL,BL,CL,DL).



    как это превести на язык MuLISPa? или просто LISPa?
    ЗЫ.. понять не могу в какую такую рамку пихать коды программ
      Геморно, но попробовать можно.
      ExpandedWrap disabled
         (defun mem (el,li) (cond <br>  ((eq li nil) T) <br>  ((eq el (car li)) nil)<br>  (T (mem el (cdr li)]<br>(defun chlist (li1,li2) (cond<br>  ((eq li1 nil) nil)<br>  ((mem (car li1) li2) (chlist (cdr li1) li2))<br>  (T (cons (car li1) (chlist (cdr li1) li2)]<br>

        Я читал, что есть реализации пролога, в которых сам компилятор реализован так, что транслирует PROLOG-код в LISP-программу.

        Ну это примерно как на ранних стадиях развития C++ компиляторы компилировали C++ код не сразу в машинный код, а в программу на Си. А далее программист уже по своему выбору пользовался имевшимися в то время в огромном кол-ве комилятором Си
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0261 ]   [ 15 queries used ]   [ Generated: 30.05.24, 19:25 GMT ]