commit fc716527fb66779944f370041b16aec34795224a
parent 72c3ed75cb753dd6dadb6b367848559b51ba0c98
Author: St John Karp <contact@stjo.hn>
Date: Wed, 15 Jan 2020 12:46:39 -0600
Replace append with append_lists
Implemented a custom version of the append predicate, which is
not defined in the ISO specification.
Diffstat:
2 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/generate_rss.pl b/generate_rss.pl
@@ -51,18 +51,18 @@ get_link(Filename, Link):-
atom_codes(Filename, FilenameCodes),
% Just assert that this is an index file before we go further.
% Backtracking after this point will take us down a rabbit hole.
- append(_, "index.md", FilenameCodes),
+ append_lists(_, "index.md", FilenameCodes),
site_url(URL, []),
- append(_, "/source", StartPath),
- append(StartPath, Path, FilenameCodes),
- append(PathWithoutFile, "index.md", Path),
- append(URL, PathWithoutFile, Link).
+ append_lists(_, "/source", StartPath),
+ append_lists(StartPath, Path, FilenameCodes),
+ append_lists(PathWithoutFile, "index.md", Path),
+ append_lists(URL, PathWithoutFile, Link).
get_link(Filename, Link):-
atom_codes(Filename, FilenameCodes),
site_url(URL, []),
- append(_, "/source", StartPath),
- append(StartPath, Path, FilenameCodes),
- append(PathWithoutExtension, ".md", Path),
- append(PathWithoutExtension, "/", PathWithSlash),
- append(URL, PathWithSlash, Link).
-\ No newline at end of file
+ append_lists(_, "/source", StartPath),
+ append_lists(StartPath, Path, FilenameCodes),
+ append_lists(PathWithoutExtension, ".md", Path),
+ append_lists(PathWithoutExtension, "/", PathWithSlash),
+ append_lists(URL, PathWithSlash, Link).
+\ No newline at end of file
diff --git a/helpers.pl b/helpers.pl
@@ -34,14 +34,23 @@ take_append(_, Item, ResultSoFar, [Item|ResultSoFar]).
replace(_, _, [], []).
replace(FindCodes, ReplaceCodes, Haystack, Result):-
- append(FindCodes, HaystackMinusMatch, Haystack),
+ append_lists(FindCodes, HaystackMinusMatch, Haystack),
replace(FindCodes, ReplaceCodes, HaystackMinusMatch, ReplacedHaystackMinusMatch),
- append(ReplaceCodes, ReplacedHaystackMinusMatch, Result).
+ append_lists(ReplaceCodes, ReplacedHaystackMinusMatch, Result).
replace(FindCodes, ReplaceCodes, [Code|Haystack], [Code|Result]):-
replace(FindCodes, ReplaceCodes, Haystack, Result).
+% append_lists(?List1, ?List2, ?Result).
+% Append two lists.
+% This is not an ISO predicate, so I've definded it here for portability.
+append_lists([], List2, List2).
+
+append_lists([First|List1], List2, [First|Result]):-
+ append_lists(List1, List2, Result).
+
+
anything([]) --> [].
anything([X|Rest]) --> [X], anything(Rest).