Czy istnieje jakiś symbol lub dobrze znany idiom dla funkcji warunkowej, w dowolnym z dialektów APL?Funkcja warunkowa w APL
Jestem pewien, że czegoś mi brakuje, ponieważ jest to taki podstawowy element językowy. W innych językach jest to nazywane Operator warunkowy, ale uniknę tego tutaj, ponieważ operator APL jest czymś zupełnie innym.
na przykład C i przyjaciele mają x ? T : F
LISPs mieć (if x T F)
Python ma T if x else F
i tak dalej.
Wiem, że nowoczesne APL-y mają :If
i przyjaciół, ale są bezwzględnymi instrukcjami kontrolującymi przepływ programu: nie zwracają wartości, nie mogą być używane wewnątrz wyrażenia iz pewnością nie mogą być stosowane do tablic bajtów. Mają zupełnie inny cel, co jest w porządku.
Jedyny przyzwoity wyrażenie mogłem wymyślić zrobić wybór funkcjonalnego jest (F T)[⎕IO+x]
, który nie wygląda szczególnie skróconą lub czytelny dla mnie, mimo że dostaje zadanie, nawet na tablicach:
('no' 'yes')[⎕IO+(⍳5)∘.>(⍳5)]
no no no no no
yes no no no no
yes yes no no no
yes yes yes no no
yes yes yes yes no
Próbowałem wymyślić podobne wyrażenie za pomocą składu ⌷
, ale nie udało się marnie na tablicach booleans. Nawet gdybym mógł, musiałby jeszcze osadzić kod ⎕IO
lub kodowany na stałe 1, co jest jeszcze gorsze pod względem czytelności.
Zanim przejdę dalej i zdefiniuję mój własny if
i użyję go w każdym programie, jaki kiedykolwiek napiszę, czy jest w tym jakiś kanon? Czy brakuje mi oczywistej funkcji lub operatora?
(Czy są jakieś programiści APL na SO? :-)
Dziękuję. Pochodzę z tła C, więc początek indeksu przy zeru ma dla mnie wiele sensu, ale nie chciałem iść przeciwko "drodze APL". – Tobia
Tony z dokumentów Iversona zakładają pochodzenie zero w całym tekście. Jest to ważny wybór, jeśli upraszcza to, co robisz. –