Я ранее спросил , как сделать allTrue [{x, list}, test ]
функция, которая защищает символ-заполнитель x
от оценки в текущем контексте так же, как Таблица [expr, {x, ...}]
защищает x
Рецепт, который я в итоге использовал, периодически выходил из строя, и я обнаружил, что проблема вызвана автоматическим преобразованием списков в PackedArrays. Вот' sa неудачный пример
SetAttributes[allTrue, HoldAll];
allTrue[{var_, lis_}, expr_] :=
LengthWhile[lis,
TrueQ[ReleaseHold[Hold[expr] /. HoldPattern[var] -> #]] &] ==
Length[lis];
allTrue[{y, Developer`ToPackedArray[{1, 1, 1}]}, y > 0]
Я хочу, чтобы allTrue [{x, {1,2,3}}, x> 0]
возвращал True
независимо от того, {1, 2,3}
автоматически конвертируется в PackedArray
, как лучше реализовать его?