aboutsummaryrefslogtreecommitdiff
path: root/src/Foreign.gleam
blob: 4c3cbe72e9aacfae284214ccb63d5dd96b920070 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
module Foreign exposing Foreign, new/1, unsafeCoerce/1, identity/1

doc """
Foreign data is data that we don't know the type of yet.
We likely get data like this from interop with Erlang, or from
IO with the outside world.
"""
external type Foreign

; // Fix GitHub syntax highlighting

doc """
Convert any Gleam data into Foreign data.
"""
external new : fn(a) { Foreign } = :"Gleam.Foreign" :identity

doc """
Unsafely cast any type into any other type.o

This is an escape hatch for the type system that may be useful when wrapping
native Erlang APIs. It is to be used as a last measure only.
"""
external unsafeCoerce : fn(a) { b } = :"Gleam.Foreign" :identity

doc False
fn identity(x) {
  x
}