-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharcAgiDataLoader.ts
47 lines (40 loc) · 1.13 KB
/
arcAgiDataLoader.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import { BunFileSystem } from "@effect/platform-bun";
import type { PlatformError } from "@effect/platform/Error";
import { FileSystem } from "@effect/platform/FileSystem";
import { Effect, pipe } from "effect";
import { Schema } from "@effect/schema";
export const Grid = Schema.Array(Schema.Array(Schema.Number));
const Example = Schema.Struct({
input: Grid,
output: Grid,
});
const ArcData = Schema.Array(Example);
const Task = Schema.Struct({
train: ArcData,
test: ArcData,
});
export type Example = typeof Example.Type;
export type Task = typeof Task.Type;
export const loadTask = ({
taskId,
dataset,
}: {
taskId: string;
dataset: "training" | "evaluation";
}): Effect.Effect<Task, PlatformError, FileSystem> => {
return Effect.gen(function* () {
const fs = yield* FileSystem;
const data = yield* fs.readFileString(
`ARC-AGI/data/${dataset}/${taskId}.json`
);
return Schema.decodeSync(Task)(JSON.parse(data));
});
};
// console.log(
// await Effect.runPromise(
// pipe(
// loadTask({ taskId: "0a938d79", dataset: "training" }),
// Effect.provide(BunFileSystem.layer)
// )
// )
// );