import { Definition } from "./definition" ; import { Expression } from "./expression" ; import { FunctionValue } from "./function" ; import { Node } from "./node" ; import { TypeValue } from "./types/value" ; export type CompositeValue = ArrayValue | RecordValue | StreamValue | FunctionValue | TypeValue ; export interface ArrayValue extends Node { contents : Expression [ ] ; } export function isArrayValue ( node ) { return node . type === "Array" ; } export interface RecordValue extends Node { contents : Definition [ ] ; } export function isRecordValue ( node ) { return node . type === "Record" ; } export interface StreamValue extends Node { lowerBound : Expression ; upperBound : Expression ; } export function isStreamValue ( node ) { return node . type === "Stream" ; }