Ваша программа работает нормально. Может быть, вы забыли завершить ввод данных точкой / периодом?
[eclipse 2]: main. % Invoke 'main' from the ECLiPSe prompt.
[3,7,5,2]. % Input the list, terminate with fullstop.
производит этот вывод
3 41.4142135623731
2 TOO LARGE
1 TOO LARGE
0 136.732050807569
Yes (0.00s cpu)
Помните, что если вы используете один из примитивов, которые читают термины в синтаксисе Пролога (read / 1,2, read_term / 1,2 и т. Д.), Каждый термин должен заканчиваться точкой полного останова (хотя ECLiPSe также принимает end-end из-файл).
Кстати, вместо использования read / 1 вы обычно просто передаёте данные в качестве аргумента. Если вы измените свой код таким способом, вы можете просто вызвать main([3,7,5,2]).