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 код!