Files
gt4carp/src/Carp/CarpNamedFunction.class.st
Veit Heller 199758d97d Multiple changes:
- Add the book and a few first pages
- Add the code generator
2022-04-17 19:48:45 +02:00

54 lines
1.1 KiB
Smalltalk

Class {
#name : #CarpNamedFunction,
#superclass : #CarpBinding,
#instVars : [
'arguments',
'body'
],
#category : #'Carp-IDE'
}
{ #category : #'instance creation' }
CarpNamedFunction class >> named: aString withArguments: aCollection andBody: anExpression [
^ self new
name: aString;
arguments: aCollection;
body: anExpression
]
{ #category : #accessing }
CarpNamedFunction >> addArgument: anArgument [
arguments add: anArgument
]
{ #category : #accessing }
CarpNamedFunction >> arguments: aCollection [
arguments := aCollection
]
{ #category : #accessing }
CarpNamedFunction >> body [
^ body
]
{ #category : #accessing }
CarpNamedFunction >> body: anExpression [
body := anExpression
]
{ #category : #initialization }
CarpNamedFunction >> initialize [
arguments := OrderedCollection new
]
{ #category : #converting }
CarpNamedFunction >> toCarp [
^ String streamContents: [ :aStream |
aStream << '(' << self bindingName << ' ' << self name toCarp
<< ' ['.
arguments do: [ :anArgument | aStream << anArgument toCarp << ' ' ].
aStream << '] ' << self body toCarp << ')' ]
]