| 832 | const log: EffectFactory<Log> = effect("println"); |
| 833 | |
| 834 | const range = (start: number, stop: number): Effected<TypeError | RangeError | Log, number[]> => |
| 835 | effected(function* () { |
| 836 | if (start >= stop) return yield* rangeError("Start must be less than stop"); |
| 837 | if (!Number.isInteger(start) || !Number.isInteger(stop)) |
| 838 | return yield* typeError("Start and stop must be integers"); |
| 839 | yield* log(`Generating range from ${start} to ${stop}`); |
| 840 | return Array.from({ length: stop - start }, (_, i) => start + i); |
| 841 | }); |
| 842 | |
| 843 | const range2 = (start: number, stop: number) => handleErrorAsResult(range(start, stop)); |
| 844 | |