remove IEvArrayString, implement __result__, cleanups
This commit is contained in:
		
							parent
							
								
									065a7aeec0
								
							
						
					
					
						commit
						43635bd39b
					
				|  | @ -152,12 +152,6 @@ export const ExpressionViewer: React.FC<Props> = ({ value, width }) => { | ||||||
|     //       {() => value.value}
 |     //       {() => value.value}
 | ||||||
|     //     </VariableBox>
 |     //     </VariableBox>
 | ||||||
|     //   );
 |     //   );
 | ||||||
|     case SqValueTag.ArrayString: |  | ||||||
|       return ( |  | ||||||
|         <VariableBox value={value} heading="Array String"> |  | ||||||
|           {() => value.value.map((r) => `"${r}"`).join(", ")} |  | ||||||
|         </VariableBox> |  | ||||||
|       ); |  | ||||||
|     case SqValueTag.Date: |     case SqValueTag.Date: | ||||||
|       return ( |       return ( | ||||||
|         <VariableBox value={value} heading="Date"> |         <VariableBox value={value} heading="Date"> | ||||||
|  | @ -242,24 +236,24 @@ export const ExpressionViewer: React.FC<Props> = ({ value, width }) => { | ||||||
|         </VariableBox> |         </VariableBox> | ||||||
|       ); |       ); | ||||||
|     } |     } | ||||||
|     case SqValueTag.Module: { |     // case SqValueTag.Module: {
 | ||||||
|       return ( |     //   return (
 | ||||||
|         <VariableList value={value} heading="Module"> |     //     <VariableList value={value} heading="Module">
 | ||||||
|           {(_) => |     //       {(_) =>
 | ||||||
|             value.value |     //         value.value
 | ||||||
|               .entries() |     //           .entries()
 | ||||||
|               .filter(([key, _]) => !key.match(/^(__result__)$/)) |     //           .filter(([key, _]) => !key.match(/^(__result__)$/))
 | ||||||
|               .map(([key, r]) => ( |     //           .map(([key, r]) => (
 | ||||||
|                 <ExpressionViewer |     //             <ExpressionViewer
 | ||||||
|                   key={key} |     //               key={key}
 | ||||||
|                   value={r} |     //               value={r}
 | ||||||
|                   width={width !== undefined ? width - 20 : width} |     //               width={width !== undefined ? width - 20 : width}
 | ||||||
|                 /> |     //             />
 | ||||||
|               )) |     //           ))
 | ||||||
|           } |     //       }
 | ||||||
|         </VariableList> |     //     </VariableList>
 | ||||||
|       ); |     //   );
 | ||||||
|     } |     // }
 | ||||||
|     case SqValueTag.Record: |     case SqValueTag.Record: | ||||||
|       const plot = makePlot(value.value); |       const plot = makePlot(value.value); | ||||||
|       if (plot) { |       if (plot) { | ||||||
|  |  | ||||||
|  | @ -4,7 +4,7 @@ open Reducer_TestHelpers | ||||||
| describe("Parse ternary operator", () => { | describe("Parse ternary operator", () => { | ||||||
|   testParseToBe( |   testParseToBe( | ||||||
|     "true ? 'YES' : 'NO'", |     "true ? 'YES' : 'NO'", | ||||||
|     "Ok({(:$$_ternary_$$ true 'YES' 'NO')})", |     "Ok(true ? ('YES') : ('NO'))", | ||||||
|   ) |   ) | ||||||
| }) | }) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -11,6 +11,7 @@ describe("eval", () => { | ||||||
|     testEvalToBe("(1+2)*3", "Ok(9)") |     testEvalToBe("(1+2)*3", "Ok(9)") | ||||||
|     testEvalToBe("2>1", "Ok(true)") |     testEvalToBe("2>1", "Ok(true)") | ||||||
|     testEvalToBe("concat('a ', 'b')", "Ok('a b')") |     testEvalToBe("concat('a ', 'b')", "Ok('a b')") | ||||||
|  |     testEvalToBe("concat([3,4], [5,6,7])", "Ok([3,4,5,6,7])") | ||||||
|     testEvalToBe("log(10)", "Ok(2.302585092994046)") |     testEvalToBe("log(10)", "Ok(2.302585092994046)") | ||||||
|     testEvalToBe("cos(10)", "Ok(-0.8390715290764524)") |     testEvalToBe("cos(10)", "Ok(-0.8390715290764524)") | ||||||
|     // TODO more built ins |     // TODO more built ins | ||||||
|  |  | ||||||
|  | @ -1,5 +1,5 @@ | ||||||
| import * as RSRecord from "../rescript/ForTS/ForTS_SquiggleValue/ForTS_SquiggleValue_Record.gen"; | import * as RSRecord from "../rescript/ForTS/ForTS_SquiggleValue/ForTS_SquiggleValue_Record.gen"; | ||||||
| import { wrapValue } from "./SqValue"; | import { SqRecordValue, wrapValue } from "./SqValue"; | ||||||
| import { SqValueLocation } from "./SqValueLocation"; | import { SqValueLocation } from "./SqValueLocation"; | ||||||
| 
 | 
 | ||||||
| type T = RSRecord.squiggleValue_Record; | type T = RSRecord.squiggleValue_Record; | ||||||
|  | @ -16,4 +16,11 @@ export class SqRecord { | ||||||
|   toString() { |   toString() { | ||||||
|     return RSRecord.toString(this._value); |     return RSRecord.toString(this._value); | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   asValue() { | ||||||
|  |     return new SqRecordValue( | ||||||
|  |       RSRecord.toSquiggleValue(this._value), | ||||||
|  |       this.location | ||||||
|  |     ); | ||||||
|  |   } | ||||||
| } | } | ||||||
|  |  | ||||||
|  | @ -44,14 +44,6 @@ export class SqArrayValue extends SqAbstractValue { | ||||||
|   } |   } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| export class SqArrayStringValue extends SqAbstractValue { |  | ||||||
|   tag = Tag.ArrayString as const; |  | ||||||
| 
 |  | ||||||
|   get value() { |  | ||||||
|     return this.valueMethod(RSValue.getArrayString); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| export class SqBoolValue extends SqAbstractValue { | export class SqBoolValue extends SqAbstractValue { | ||||||
|   tag = Tag.Bool as const; |   tag = Tag.Bool as const; | ||||||
| 
 | 
 | ||||||
|  | @ -150,7 +142,6 @@ export class SqVoidValue extends SqAbstractValue { | ||||||
| 
 | 
 | ||||||
| const tagToClass = { | const tagToClass = { | ||||||
|   [Tag.Array]: SqArrayValue, |   [Tag.Array]: SqArrayValue, | ||||||
|   [Tag.ArrayString]: SqArrayStringValue, |  | ||||||
|   [Tag.Bool]: SqBoolValue, |   [Tag.Bool]: SqBoolValue, | ||||||
|   [Tag.Date]: SqDateValue, |   [Tag.Date]: SqDateValue, | ||||||
|   [Tag.Declaration]: SqDeclarationValue, |   [Tag.Declaration]: SqDeclarationValue, | ||||||
|  | @ -169,7 +160,6 @@ const tagToClass = { | ||||||
| // type SqValue = typeof tagToClass[keyof typeof tagToClass];
 | // type SqValue = typeof tagToClass[keyof typeof tagToClass];
 | ||||||
| export type SqValue = | export type SqValue = | ||||||
|   | SqArrayValue |   | SqArrayValue | ||||||
|   | SqArrayStringValue |  | ||||||
|   | SqBoolValue |   | SqBoolValue | ||||||
|   | SqDateValue |   | SqDateValue | ||||||
|   | SqDeclarationValue |   | SqDeclarationValue | ||||||
|  |  | ||||||
|  | @ -13,9 +13,6 @@ type squiggleValue_Lambda = ForTS_SquiggleValue_Lambda.squiggleValue_Lambda //us | ||||||
| @module("./ForTS_SquiggleValue_tag") @scope("squiggleValueTag") | @module("./ForTS_SquiggleValue_tag") @scope("squiggleValueTag") | ||||||
| external svtArray_: string = "Array" | external svtArray_: string = "Array" | ||||||
| 
 | 
 | ||||||
| @module("./ForTS_SquiggleValue_tag") @scope("squiggleValueTag") |  | ||||||
| external svtArrayString_: string = "ArrayString" |  | ||||||
| 
 |  | ||||||
| @module("./ForTS_SquiggleValue_tag") @scope("squiggleValueTag") | @module("./ForTS_SquiggleValue_tag") @scope("squiggleValueTag") | ||||||
| external svtBool_: string = "Bool" | external svtBool_: string = "Bool" | ||||||
| 
 | 
 | ||||||
|  | @ -61,7 +58,6 @@ external castEnum: string => squiggleValueTag = "%identity" | ||||||
| let getTag = (variant: squiggleValue): squiggleValueTag => | let getTag = (variant: squiggleValue): squiggleValueTag => | ||||||
|   switch variant { |   switch variant { | ||||||
|   | IEvArray(_) => svtArray_->castEnum |   | IEvArray(_) => svtArray_->castEnum | ||||||
|   | IEvArrayString(_) => svtArrayString_->castEnum |  | ||||||
|   | IEvBool(_) => svtBool_->castEnum |   | IEvBool(_) => svtBool_->castEnum | ||||||
|   | IEvDate(_) => svtDate_->castEnum |   | IEvDate(_) => svtDate_->castEnum | ||||||
|   | IEvDeclaration(_) => svtDeclaration_->castEnum |   | IEvDeclaration(_) => svtDeclaration_->castEnum | ||||||
|  | @ -94,13 +90,6 @@ let getArray = (variant: squiggleValue): option<squiggleValue_Array> => | ||||||
|   | _ => None |   | _ => None | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| @genType |  | ||||||
| let getArrayString = (variant: squiggleValue): option<array<string>> => |  | ||||||
|   switch variant { |  | ||||||
|   | IEvArrayString(value) => value->Some |  | ||||||
|   | _ => None |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
| @genType | @genType | ||||||
| let getBool = (variant: squiggleValue): option<bool> => | let getBool = (variant: squiggleValue): option<bool> => | ||||||
|   switch variant { |   switch variant { | ||||||
|  |  | ||||||
|  | @ -7,3 +7,6 @@ let getKeyValuePairs = (value: squiggleValue_Record): array<(string, squiggleVal | ||||||
| 
 | 
 | ||||||
| @genType | @genType | ||||||
| let toString = (v: squiggleValue_Record) => ReducerInterface_InternalExpressionValue.toStringMap(v) | let toString = (v: squiggleValue_Record) => ReducerInterface_InternalExpressionValue.toStringMap(v) | ||||||
|  | 
 | ||||||
|  | @genType | ||||||
|  | let toSquiggleValue = (v: squiggleValue_Record): squiggleValue => IEvRecord(v) | ||||||
|  |  | ||||||
|  | @ -1,6 +1,5 @@ | ||||||
| export enum squiggleValueTag { | export enum squiggleValueTag { | ||||||
|   Array = "Array", |   Array = "Array", | ||||||
|   ArrayString = "ArrayString", |  | ||||||
|   Bool = "Bool", |   Bool = "Bool", | ||||||
|   Date = "Date", |   Date = "Date", | ||||||
|   Declaration = "Declaration", |   Declaration = "Declaration", | ||||||
|  |  | ||||||
|  | @ -93,4 +93,57 @@ let library = [ | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|   ), |   ), | ||||||
|  |   makeFn( | ||||||
|  |     "concat", | ||||||
|  |     [FRTypeString, FRTypeString], | ||||||
|  |     inputs => { | ||||||
|  |       switch inputs { | ||||||
|  |       | [IEvString(a), IEvString(b)] => { | ||||||
|  |         let answer = Js.String2.concat(a, b) | ||||||
|  |         answer->Reducer_T.IEvString->Ok | ||||||
|  |       } | ||||||
|  |       | _ => Error(impossibleError) | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   ), | ||||||
|  |   makeFn( | ||||||
|  |     "concat", | ||||||
|  |     [FRTypeArray(FRTypeAny), FRTypeArray(FRTypeAny)], | ||||||
|  |     inputs => { | ||||||
|  |       switch inputs { | ||||||
|  |       | [IEvArray(originalA), IEvArray(b)] => { | ||||||
|  |         let a = originalA->Js.Array2.copy | ||||||
|  |         let _ = Js.Array2.pushMany(a, b) | ||||||
|  |         a->Reducer_T.IEvArray->Ok | ||||||
|  |       } | ||||||
|  |       | _ => Error(impossibleError) | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   ), | ||||||
|  |   makeFn( | ||||||
|  |     "inspect", | ||||||
|  |     [FRTypeAny], | ||||||
|  |     inputs => { | ||||||
|  |       switch inputs { | ||||||
|  |       | [value] => { | ||||||
|  |         Js.log(value->ReducerInterface_InternalExpressionValue.toString) | ||||||
|  |         value->Ok | ||||||
|  |       } | ||||||
|  |       | _ => Error(impossibleError) | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   ), | ||||||
|  |   makeFn( | ||||||
|  |     "inspect", | ||||||
|  |     [FRTypeAny, FRTypeString], | ||||||
|  |     inputs => { | ||||||
|  |       switch inputs { | ||||||
|  |       | [value, IEvString(label)] => { | ||||||
|  |         Js.log(`${label}: ${value->ReducerInterface_InternalExpressionValue.toString}`) | ||||||
|  |         value->Ok | ||||||
|  |       } | ||||||
|  |       | _ => Error(impossibleError) | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   ), | ||||||
| ] | ] | ||||||
|  |  | ||||||
|  | @ -34,15 +34,15 @@ let callInternal = ( | ||||||
|     | call => call->IEV.toStringFunctionCall->MathJs.Eval.eval |     | call => call->IEV.toStringFunctionCall->MathJs.Eval.eval | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|   let doAddArray = (originalA, b) => { |   // let doAddArray = (originalA, b) => { | ||||||
|     let a = originalA->Js.Array2.copy |   //   let a = originalA->Js.Array2.copy | ||||||
|     let _ = Js.Array2.pushMany(a, b) |   //   let _ = Js.Array2.pushMany(a, b) | ||||||
|     a->Reducer_T.IEvArray->Ok |   //   a->Reducer_T.IEvArray->Ok | ||||||
|   } |   // } | ||||||
|   let doAddString = (a, b) => { |   // let doAddString = (a, b) => { | ||||||
|     let answer = Js.String2.concat(a, b) |   //   let answer = Js.String2.concat(a, b) | ||||||
|     answer->Reducer_T.IEvString->Ok |   //   answer->Reducer_T.IEvString->Ok | ||||||
|   } |   // } | ||||||
| 
 | 
 | ||||||
|   let inspect = (value: Reducer_T.value) => { |   let inspect = (value: Reducer_T.value) => { | ||||||
|     Js.log(value->IEV.toString) |     Js.log(value->IEV.toString) | ||||||
|  | @ -107,10 +107,10 @@ let callInternal = ( | ||||||
|   // | ("$_typeTuple_$", [IEvArray(elems)]) => TypeBuilder.typeTuple(elems) |   // | ("$_typeTuple_$", [IEvArray(elems)]) => TypeBuilder.typeTuple(elems) | ||||||
|   // | ("$_typeArray_$", [elem]) => TypeBuilder.typeArray(elem) |   // | ("$_typeArray_$", [elem]) => TypeBuilder.typeArray(elem) | ||||||
|   // | ("$_typeRecord_$", [IEvRecord(propertyMap)]) => TypeBuilder.typeRecord(propertyMap) |   // | ("$_typeRecord_$", [IEvRecord(propertyMap)]) => TypeBuilder.typeRecord(propertyMap) | ||||||
|   | ("concat", [IEvArray(aValueArray), IEvArray(bValueArray)]) => |   // | ("concat", [IEvArray(aValueArray), IEvArray(bValueArray)]) => | ||||||
|     doAddArray(aValueArray, bValueArray) |   //   doAddArray(aValueArray, bValueArray) | ||||||
|   | ("concat", [IEvString(aValueString), IEvString(bValueString)]) => |   // | ("concat", [IEvString(aValueString), IEvString(bValueString)]) => | ||||||
|     doAddString(aValueString, bValueString) |   //   doAddString(aValueString, bValueString) | ||||||
|   | ("inspect", [value, IEvString(label)]) => inspectLabel(value, label) |   | ("inspect", [value, IEvString(label)]) => inspectLabel(value, label) | ||||||
|   | ("inspect", [value]) => inspect(value) |   | ("inspect", [value]) => inspect(value) | ||||||
|   | (_, [IEvBool(_)]) |   | (_, [IEvBool(_)]) | ||||||
|  |  | ||||||
|  | @ -6,8 +6,6 @@ type expression = Reducer_T.expression | ||||||
| 
 | 
 | ||||||
| let eArray = (anArray: array<T.expression>) => anArray->T.EArray | let eArray = (anArray: array<T.expression>) => anArray->T.EArray | ||||||
| 
 | 
 | ||||||
| let eArrayString = anArray => anArray->T.IEvArrayString->T.EValue |  | ||||||
| 
 |  | ||||||
| let eBool = aBool => aBool->T.IEvBool->T.EValue | let eBool = aBool => aBool->T.IEvBool->T.EValue | ||||||
| 
 | 
 | ||||||
| let eCall = (fn: expression, args: array<expression>): expression => T.ECall(fn, args) | let eCall = (fn: expression, args: array<expression>): expression => T.ECall(fn, args) | ||||||
|  |  | ||||||
|  | @ -11,11 +11,7 @@ let set = (namespace: t, id: string, value): t => { | ||||||
| 
 | 
 | ||||||
| let mergeFrom = (from: t, to: t): t => { | let mergeFrom = (from: t, to: t): t => { | ||||||
|   to->Belt.Map.String.reduce(from, (namespace, key, value) => { |   to->Belt.Map.String.reduce(from, (namespace, key, value) => { | ||||||
|     if key != "__result__" { |     namespace->set(key, value) | ||||||
|       namespace->set(key, value) |  | ||||||
|     } else { |  | ||||||
|       namespace |  | ||||||
|     } |  | ||||||
|   }) |   }) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -3,7 +3,6 @@ type environment = GenericDist.env | ||||||
| @genType.opaque | @genType.opaque | ||||||
| type rec value = | type rec value = | ||||||
|   | IEvArray(arrayValue) |   | IEvArray(arrayValue) | ||||||
|   | IEvArrayString(array<string>) |  | ||||||
|   | IEvBool(bool) |   | IEvBool(bool) | ||||||
|   | IEvDate(Js.Date.t) |   | IEvDate(Js.Date.t) | ||||||
|   | IEvDeclaration(lambdaDeclaration) |   | IEvDeclaration(lambdaDeclaration) | ||||||
|  |  | ||||||
|  | @ -17,7 +17,6 @@ type functionCall = (string, array<t>) | ||||||
| let rec toString = (aValue: T.value) => | let rec toString = (aValue: T.value) => | ||||||
|   switch aValue { |   switch aValue { | ||||||
|   | IEvArray(anArray) => toStringArray(anArray) |   | IEvArray(anArray) => toStringArray(anArray) | ||||||
|   | IEvArrayString(anArray) => toStringArrayString(anArray) |  | ||||||
|   | IEvBool(aBool) => toStringBool(aBool) |   | IEvBool(aBool) => toStringBool(aBool) | ||||||
|   | IEvDate(date) => toStringDate(date) |   | IEvDate(date) => toStringDate(date) | ||||||
|   | IEvDeclaration(d) => toStringDeclaration(d) |   | IEvDeclaration(d) => toStringDeclaration(d) | ||||||
|  | @ -35,10 +34,6 @@ and toStringArray = anArray => { | ||||||
|   let args = anArray->Js.Array2.map(each => toString(each))->Js.Array2.toString |   let args = anArray->Js.Array2.map(each => toString(each))->Js.Array2.toString | ||||||
|   `[${args}]` |   `[${args}]` | ||||||
| } | } | ||||||
| and toStringArrayString = anArray => { |  | ||||||
|   let args = anArray->Js.Array2.toString |  | ||||||
|   `[${args}]` |  | ||||||
| } |  | ||||||
| and toStringBool = aBool => Js.String.make(aBool) | and toStringBool = aBool => Js.String.make(aBool) | ||||||
| and toStringCall = fName => `:${fName}` | and toStringCall = fName => `:${fName}` | ||||||
| and toStringDate = date => DateTime.Date.toString(date) | and toStringDate = date => DateTime.Date.toString(date) | ||||||
|  | @ -69,7 +64,6 @@ and toStringMap = aMap => { | ||||||
| let toStringWithType = (aValue: T.value) => | let toStringWithType = (aValue: T.value) => | ||||||
|   switch aValue { |   switch aValue { | ||||||
|   | IEvArray(_) => `Array::${toString(aValue)}` |   | IEvArray(_) => `Array::${toString(aValue)}` | ||||||
|   | IEvArrayString(_) => `ArrayString::${toString(aValue)}` |  | ||||||
|   | IEvBool(_) => `Bool::${toString(aValue)}` |   | IEvBool(_) => `Bool::${toString(aValue)}` | ||||||
|   | IEvDate(_) => `Date::${toString(aValue)}` |   | IEvDate(_) => `Date::${toString(aValue)}` | ||||||
|   | IEvDeclaration(_) => `Declaration::${toString(aValue)}` |   | IEvDeclaration(_) => `Declaration::${toString(aValue)}` | ||||||
|  | @ -116,7 +110,6 @@ let toStringResultRecord = x => | ||||||
| 
 | 
 | ||||||
| type internalExpressionValueType = | type internalExpressionValueType = | ||||||
|   | EvtArray |   | EvtArray | ||||||
|   | EvtArrayString |  | ||||||
|   | EvtBool |   | EvtBool | ||||||
|   | EvtDate |   | EvtDate | ||||||
|   | EvtDeclaration |   | EvtDeclaration | ||||||
|  | @ -137,7 +130,6 @@ type functionDefinitionSignature = | ||||||
| let valueToValueType = (value: T.value) => | let valueToValueType = (value: T.value) => | ||||||
|   switch value { |   switch value { | ||||||
|   | IEvArray(_) => EvtArray |   | IEvArray(_) => EvtArray | ||||||
|   | IEvArrayString(_) => EvtArrayString |  | ||||||
|   | IEvBool(_) => EvtBool |   | IEvBool(_) => EvtBool | ||||||
|   | IEvDate(_) => EvtDate |   | IEvDate(_) => EvtDate | ||||||
|   | IEvDeclaration(_) => EvtDeclaration |   | IEvDeclaration(_) => EvtDeclaration | ||||||
|  | @ -160,7 +152,6 @@ let functionCallToCallSignature = (functionCall: functionCall): functionCallSign | ||||||
| let valueTypeToString = (valueType: internalExpressionValueType): string => | let valueTypeToString = (valueType: internalExpressionValueType): string => | ||||||
|   switch valueType { |   switch valueType { | ||||||
|   | EvtArray => `Array` |   | EvtArray => `Array` | ||||||
|   | EvtArrayString => `ArrayString` |  | ||||||
|   | EvtBool => `Bool` |   | EvtBool => `Bool` | ||||||
|   // | EvtCall => `Call` |   // | EvtCall => `Call` | ||||||
|   | EvtDate => `Date` |   | EvtDate => `Date` | ||||||
|  |  | ||||||
|  | @ -22,7 +22,7 @@ let internalStdLib: Reducer_T.namespace = { | ||||||
|         } |         } | ||||||
|       | [IEvRecord(dict), IEvString(sIndex)] => switch Belt.Map.String.get(dict, sIndex) { |       | [IEvRecord(dict), IEvString(sIndex)] => switch Belt.Map.String.get(dict, sIndex) { | ||||||
|         | Some(value) => value |         | Some(value) => value | ||||||
|         | None => RERecordPropertyNotFound("Record index not found", sIndex)->ErrorException->raise |         | None => RERecordPropertyNotFound("Record property not found", sIndex)->ErrorException->raise | ||||||
|         } |         } | ||||||
|       | _ => REOther("Trying to access key on wrong value")->ErrorException->raise |       | _ => REOther("Trying to access key on wrong value")->ErrorException->raise | ||||||
|       } |       } | ||||||
|  |  | ||||||
|  | @ -161,15 +161,25 @@ let getContinuationsBefore = (project: t, sourceId: string): array<Reducer_T.nam | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| let linkDependencies = (project: t, sourceId: string): Reducer_T.namespace => { | let linkDependencies = (project: t, sourceId: string): Reducer_T.namespace => { | ||||||
|   let nameSpace = Reducer_Namespace.mergeMany( |   let pastChain = project->getPastChain(sourceId) | ||||||
|     Belt.Array.concat( |   let namespace = Reducer_Namespace.mergeMany( | ||||||
|  |     Belt.Array.concatMany([ | ||||||
|       [project->getStdLib], |       [project->getStdLib], | ||||||
|       project->getContinuationsBefore(sourceId) |       pastChain->Belt.Array.map(project->getBindings), | ||||||
|     ) |       pastChain->Belt.Array.map( | ||||||
|  |         id => Reducer_Namespace.fromArray([ | ||||||
|  |           ("__result__", | ||||||
|  |           switch project->getResult(id) { | ||||||
|  |             | Ok(result) => result | ||||||
|  |             | Error(error) => error->Reducer_ErrorValue.ErrorException->raise | ||||||
|  |           }) | ||||||
|  |         ]) | ||||||
|  |       ), | ||||||
|  |     ]) | ||||||
|   ) |   ) | ||||||
| 
 | 
 | ||||||
|   let includesAsVariables = project->getIncludesAsVariables(sourceId) |   let includesAsVariables = project->getIncludesAsVariables(sourceId) | ||||||
|   Belt.Array.reduce(includesAsVariables, nameSpace, (acc, (variable, includeFile)) => |   Belt.Array.reduce(includesAsVariables, namespace, (acc, (variable, includeFile)) => | ||||||
|     acc->Reducer_Namespace.set( |     acc->Reducer_Namespace.set( | ||||||
|       variable, |       variable, | ||||||
|       project->getBindings(includeFile)->Reducer_Namespace.toRecord |       project->getBindings(includeFile)->Reducer_Namespace.toRecord | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue
	
	Block a user