Externals
Понякога в проектите си искаме да ползваме код, написан на други езици за програмиране, най-често Erlang и JavaScript, в зависимост от средата за изпълнение (runtime), която ползваме. Gleam позволява да импортираме и да използваме външен код чрез external functions (външни функции) и external types (външни типове).
External type е тип, който няма конструктори. Gleam не знае как е устроен нито как да се създаде стойност от него. Зне само че съществува такъв тип.
External function (външна функция) е функция, на която е зададен атрибутът
@external
(външен). Този атрибут инструктира компилатора да
използва модулната функция (module function), указана в атрибута, вместо да
търси Gleam код за тази функция.
Компилаторът не може да провери какви са типовете на аргументите и връщаната
стойност на функциите в други езици, затова когато използваме атрибута
@external
(външен), е нужно да указваме типовете (types) в Gleam
код. Gleam "вярва", че посочените типове са правилни и грешки в тях биха
довели до неочаквано поведение или сривове по време на изпълнение (runtime).
Бъдете внимателни!
Външните функции (external functions) са полезни, но е добре да ги използваме пестеливо. Навсякъде, където е възможно пишете Gleam код!