Skip to content

refactor print #1466

Open
Open
@alex-s168

Description

@alex-s168
interface Sink<t> {
  fn .consume-many(s: self, v: Iterator<t>): self;
};

fn .consume(s: st+Sink<t>, v: t): st = (
  s.consume-many(single(v))
);

interface Write<t> {
  fn .write(s: self, o: Sink<t>): o;
};

type FileSink = FileSink { o: IO::File };
type FileSink implements Sink<U8>;

let .into(f: IO::File, out: Type<FileSink>) = (
  FileSink { f }
);

let .consume-many(s: FileSink, v: U8): FileSink = (
  # fwrite here
);

# SEPERATE FROM Into<String>!!!
interface ToString {
  let .to-tring(v: self): String;
};

let print(v: Write<U8>): Nil;
let print(v: ToString): Nil;
let println(v: Write<U8>): Nil;
let println(v: ToString): Nil;

let eprint(v: Write<U8>): Nil;
let eprint(v: ToString): Nil;
let eprintln(v: Write<U8>): Nil;
let eprintln(v: ToString): Nil;

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

No status

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions