aboutsummaryrefslogtreecommitdiff
path: root/src/eval/index.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/eval/index.ts')
-rw-r--r--src/eval/index.ts19
1 files changed, 11 insertions, 8 deletions
diff --git a/src/eval/index.ts b/src/eval/index.ts
index 0579579..4c47adf 100644
--- a/src/eval/index.ts
+++ b/src/eval/index.ts
@@ -103,13 +103,20 @@ const checkExpr = <T>(
)
},
- _: _ => [],
+ // Or: ({ left, right }) => {
+ // return pipe(
+ // [],
+ // skip(1),
+ // )
+ // },
+
+ _: _ => { throw new Error(`TODO: ${expr.tag} not implemented for match`) },
}),
)
}
export const matchAll = <T>(
- [startO, exprs, endO]: ListExpr,
+ [startO, expr, endO]: ListExpr,
list: T[],
): MatchGroupResult => {
const check = (index: number, ls: T[], expr: Expr): MatchGroupIndexed[] => {
@@ -125,14 +132,12 @@ export const matchAll = <T>(
return checkExpr(expr, item, ls, index, next)
}
- const expr = Expr.Group({ exprs })
-
return {
groups: check(0, list, expr),
}
}
-export const find = <T>([startO, exprs, endO]: ListExpr, list: T[]): any => {
+export const find = <T>([startO, expr, endO]: ListExpr, list: T[]): any => {
const check =
(expr: Expr) =>
<T>(x: T, i: number, ls: T[]): boolean => {
@@ -161,7 +166,5 @@ export const find = <T>([startO, exprs, endO]: ListExpr, list: T[]): any => {
)
}
- const cs = exprs.map(check)
-
- return list.filter((x, i, ls) => cs.every(c => c(x, i, ls)))
+ return list.filter((x, i, ls) => check(expr)(x, i, ls))
}