ソースコード:
suffix(Suffix, List) ->
Delta = length(List) - length(Suffix),
Delta >= 0 andalso nthtail(Delta, List) =:= Suffix.
以下のように書き換えてみてはいかがでしょうか。
suffix(Suffix, List) ->
prefix(reverse(Suffix), reverse(List)).
Delta >=0 の場合、最初のものは 4 回トラバースし、2 つ目は 3 回トラバースしますが、正しいですか?