html//1中的SWI Prolog条件包含

html//1中的SWI Prolog条件包含,html,prolog,swi-prolog,dcg,Html,Prolog,Swi Prolog,Dcg,我有一些html片段,它们依赖于会话中设置的一些值,是否有可能以某种方式对包含进行条件化,这样我就不会复制大量html代码?或者也许有另一种方法不涉及html//1 foo --> html([ div(p('I''m always displayed')), { http_session_data(Data), % some other logic }, div(p('I''m only displayed when t

我有一些html片段,它们依赖于会话中设置的一些值,是否有可能以某种方式对包含进行条件化,这样我就不会复制大量html代码?或者也许有另一种方法不涉及html//1

foo -->
  html([
    div(p('I''m always displayed')),
    {
        http_session_data(Data),
        % some other logic
    },
    div(p('I''m only displayed when there''s session data'))
  )].

代码失败:错误:[线程]httpd@9999_3]无法转换为HTML:http\u session\u dataData

我将逻辑放在另一个DCG中并将其包含在HTML//1中,从而解决了这个问题

(
  {
    http_session_data(Data)
  }
->
  div(p('I''m only displayed when there''s session data'))
;
  {true}
)
{true}部分是消除控制台中的错误消息

然而,我后来改变了主意,决定使用AngularJS来处理Html,因为Prolog对它的支持对于复杂的DOM来说太基本和痛苦了