Skip to content

Instantly share code, notes, and snippets.

@kraftdorian
Last active April 17, 2021 11:14
Show Gist options
  • Save kraftdorian/e182e0f2e019db7d057485ee0dc1ecb1 to your computer and use it in GitHub Desktop.
Save kraftdorian/e182e0f2e019db7d057485ee0dc1ecb1 to your computer and use it in GitHub Desktop.
Recursive list minimum in JavaScript written in Prolog style
const usePrologStyleList = (array) => {
const [head, ...tail] = array;
return [head, tail];
};
const listMinimumState = (list, minimum, acc) => {
const [head, tail] = usePrologStyleList(list);
if (head === undefined) {
return minimum = acc;
}
if (!acc) {
return listMinimumState(tail, minimum, head);
} else {
return listMinimumState(tail, minimum, Math.min(acc, head));
}
};
const listMinimum = (list) => listMinimumState(list, null, null);
@kraftdorian
Copy link
Author

This script is based on this Prolog program.

Use case:

const minimum = listMinimum([3, 5, 1, 2, 4]);
console.log(minimum);

Result:

1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment