<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">I have this code:<div class=""><br class=""></div><div class=""><font face="Menlo" class="">:- pred pd_fence(string::in, int::out) is semidet.<br class=""><br class="">pd_fence(S, N) :-<br class="">    N = string.prefix_length(is_tilde, S),<br class="">    N > 2,<br class="">    trace[io(!Dbg)]<br class="">    (<br class="">        io.format("N is %i for %s\n", [i(N), s(S)], !Dbg)<br class="">    ).</font><br class=""><br class=""></div><div class="">And when I run it with some tests strings I get this output, the values seem to be exactly twice the number of tilde characters and I don’t understand why!</div><div class=""><br class=""></div><div class=""><font face="Menlo" class="">./classify_line '# heading1' 'plain text' '```' '```c' '```c<<*>>' '˜˜˜' '˜˜˜{.c}' '˜˜˜˜˜{.c} <<data>>' '˜˜˜˜˜{.c} <<core>>= ../src/filename.c'</font></div><div class=""><font face="Menlo" class=""><br class=""></font></div><div class=""><font face="Menlo" class="">plain_text => # heading1<br class="">plain_text => plain text<br class="">fence_MD(42) => ```<br class="">fence_MD(42) => ```c<br class="">fence_MD(42) => ```c<<*>><br class=""><b class="">N is 6 for ˜˜˜<br class="">fence_PD(42, 6) => ˜˜˜<br class="">N is 6 for ˜˜˜{.c}<br class="">fence_PD(42, 6) => ˜˜˜{.c}<br class="">N is 10 for ˜˜˜˜˜{.c} <<data>><br class="">fence_PD(42, 10) => ˜˜˜˜˜{.c} <<data>><br class="">N is 10 for ˜˜˜˜˜{.c} <<core>>= ../src/filename.c<br class="">fence_PD(42, 10) => ˜˜˜˜˜{.c} <<core>>= ../src/filename.c</b></font></div><div class=""><br class=""></div><div class="">Thanks,</div><div class="">Sean.</div><div class=""><br class=""></div></body></html>