Update 'Interface Definitions'

Sasha Koshka 2022-08-24 16:32:21 +00:00
parent c8f91f394e
commit ccc12737d0
1 changed files with 16 additions and 12 deletions

@ -1,17 +1,21 @@
# Syntax
```
face ro ReadWriter:Face
write
> data:{Byte ..}
< wrote:Int
< err:Error
read
> into:{Byte ..}
< read:Int
< err:Error
```
Interface sections contain a list of behaviors. Behaviors are a name followed by an indented block of inputs and outputs. It is essentially a more stripped down version of function syntax.
# Semantics
Interfaces in ARF are like interfaces in Go, that is to say, their methods are
defined and any object that has at least those methods can fulfill that
interface.
They are defined like this:
```
face ro ReadWriter:Face
read
> into:{Byte ..}
< amountRead:Size
write
> buffer{Byte ..}
< amountWrote:Size
```
Interfaces are able to inherit other interfaces using type notation. If an interface inherits nothing, it must inherit `Face`, which is a blank interface.