Rearranging variable_names

后端 未结 4 1183
有刺的猬
有刺的猬 2021-01-01 08:17

How to write in a standard conforming manner avs_term_rearranged(AVs, T, AVsR) with given AVs and T such that AVsR is a p

4条回答
  •  情话喂你
    2021-01-01 08:53

    avs_term_rearranged(AVs, T, AVsR) :-
        term_variables(T, Vs),
        copy_term(Vs+AVs, Vs1+AVs1),
        bind_names(AVs1),
        build_vn_list(Vs, Vs1, AVsR).
    
    bind_names([]).
    bind_names([N=V|AVs]) :-
        N = V,
        bind_names(AVs).
    
    build_vn_list([], [], []).
    build_vn_list([V|Vs],[N|Ns],NVs) :-
        ( atom(N) ->
          NVs = [N=V|NVs1]
        ; var(N) ->
          NVs = NVs1
        ),
        build_vn_list(Vs, Ns, NVs1).
    

提交回复
热议问题