@@ -193,80 +193,6 @@ func (doubleShow) ArgType() Value { return Double }
193193func (optional ) Call (x Value ) Value { return OptionalOf {x } }
194194func (optional ) ArgType () Value { return Type }
195195
196- func (build optionalBuild ) Call (x Value ) Value {
197- if build .typ == nil {
198- return optionalBuild {typ : x }
199- }
200- var some Value = lambda {
201- Label : "a" ,
202- Domain : build .typ ,
203- Fn : func (a Value ) Value {
204- return Some {a }
205- },
206- }
207- return apply (x , OptionalOf {build .typ }, some , NoneOf {build .typ })
208- }
209-
210- func (build optionalBuild ) ArgType () Value {
211- if build .typ == nil {
212- return Type
213- }
214- return NewPi ("optional" , Type , func (optional Value ) Value {
215- return NewFnType ("just" , NewFnType ("_" , build .typ , optional ),
216- NewFnType ("nothing" , optional ,
217- optional ))
218- })
219- }
220-
221- func (fold optionalFold ) Call (x Value ) Value {
222- if fold .typ1 == nil {
223- return optionalFold {typ1 : x }
224- }
225- if fold .opt == nil {
226- return optionalFold {typ1 : fold .typ1 , opt : x }
227- }
228- if fold .typ2 == nil {
229- return optionalFold {
230- typ1 : fold .typ1 ,
231- opt : fold .opt ,
232- typ2 : x ,
233- }
234- }
235- if fold .some == nil {
236- return optionalFold {
237- typ1 : fold .typ1 ,
238- opt : fold .opt ,
239- typ2 : fold .typ2 ,
240- some : x ,
241- }
242- }
243- none := x
244- if s , ok := fold .opt .(Some ); ok {
245- return apply (fold .some , s .Val )
246- }
247- if _ , ok := fold .opt .(NoneOf ); ok {
248- return none
249- }
250- return nil
251- }
252-
253- func (fold optionalFold ) ArgType () Value {
254- if fold .typ1 == nil {
255- return Type
256- }
257- if fold .opt == nil {
258- return OptionalOf {fold .typ1 }
259- }
260- if fold .typ2 == nil {
261- return Type
262- }
263- if fold .some == nil {
264- return NewFnType ("_" , fold .typ1 , fold .typ2 )
265- }
266- // none
267- return fold .typ2
268- }
269-
270196func (none ) Call (a Value ) Value { return NoneOf {a } }
271197func (none ) ArgType () Value { return Type }
272198
@@ -527,10 +453,8 @@ var (
527453 IntegerToDouble Callable = integerToDouble {}
528454 DoubleShow Callable = doubleShow {}
529455
530- Optional Callable = optional {}
531- OptionalBuild Callable = optionalBuild {}
532- OptionalFold Callable = optionalFold {}
533- None Callable = none {}
456+ Optional Callable = optional {}
457+ None Callable = none {}
534458
535459 TextShow Callable = textShow {}
536460
0 commit comments