From f821bab9b64af53ad894519dac022abbae03581b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Se=C3=A1n=20Healy?= Date: Mon, 20 Apr 2026 16:49:07 +0100 Subject: [PATCH] Avoid `setof`, favor `findall`; less buggy. --- server.pl | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/server.pl b/server.pl index c9e191d..ea6a1af 100755 --- a/server.pl +++ b/server.pl @@ -174,7 +174,7 @@ filetype_suffix(File, SuffixLower) :- last(Parts, Suffix), string_lower(Suffix, SuffixLower). files_to_filetypes(Files, FileTypes) :- - setof( + findall( Suffix, ( member(File, Files), @@ -184,31 +184,34 @@ files_to_filetypes(Files, FileTypes) :- format(atom(Suffix), '.~w', [SuffixWithoutDot]), format(user_error, 'Formatted suffix with dot: ~w~n', [Suffix]) ), - FileTypes - ), !. + FileTypeList + ), + list_to_set(FileTypeList, FileTypes), !. files_to_filetypes(_Files, []). % If no file types could be extracted, return an empty list file_to_basename(File, BaseName) :- split_string(File, "/", "", Parts), last(Parts, BaseName). files_to_basenames(Files, BaseNames) :- - setof( + findall( BaseName, ( member(File, Files), file_to_basename(File, BaseName) ), - BaseNames - ), !. + BaseNameList + ), + list_to_set(BaseNameList, BaseNames), !. files_to_basenames(_Files, []). % If no basenames could be extracted, return an empty list files_with_prefix_slash(Files, PrefixedFiles) :- - setof( + findall( PrefixedFile, ( member(File, Files), format(atom(PrefixedFile), '/~w', [File]) ), - PrefixedFiles - ), !. + PrefixedFileList + ), + list_to_set(PrefixedFileList, PrefixedFiles), !. files_with_prefix_slash(_Files, []). % If no files could be prefixed, return an empty list git_ssh_url(Name, URL) :- git_url(BaseURL),