// 표준 라이브러리: 리스트. // // 본문이 없다. 런타임이 구현하고, 이 파일은 그 계약을 말한다. // 그래서 이 파일은 구현이 아니라 시험대다 — effect 다형성이 실제로 쓸 만한지가 // 여기서 결정된다. each와 map이 effect 변수 하나로 표현되지 않으면 규칙이 // 틀린 것이고, 그건 v1로 미룰 수 없는 발견이다. // // e는 파라미터의 effect 슬롯에 홀로 나타난다 (결정 위치). 호출 지점에서 // 인자의 시그니처를 읽어 묶인다 — 추론이 아니라 읽기다. pub fn len[a](xs: List[a]) -> Int pub fn each[a, e: effects]( xs: List[a], f: fn(a) effects e, ) effects e pub fn map[a, b, e: effects]( xs: List[a], f: fn(a) effects e -> b, ) effects e -> List[b]