diff --git a/packages/effect-fc/src/Component.ts b/packages/effect-fc/src/Component.ts
index 482b227..af91d9a 100644
--- a/packages/effect-fc/src/Component.ts
+++ b/packages/effect-fc/src/Component.ts
@@ -87,19 +87,26 @@ export interface Memoized
{
readonly propsAreEqual?: Equivalence.Equivalence
}
-export const memo: {
+export const memo = >(
+ self: ExcludeKeys>>
+): T & Memoized> => Object.setPrototypeOf(
+ { ...self, memo: true },
+ Object.getPrototypeOf(self),
+)
+
+export const memoWithEquivalence: {
>(
- propsAreEqual?: Equivalence.Equivalence>
+ propsAreEqual: Equivalence.Equivalence>
): (
self: ExcludeKeys>>
) => T & Memoized>
>(
self: ExcludeKeys>>,
- propsAreEqual?: Equivalence.Equivalence>,
+ propsAreEqual: Equivalence.Equivalence>,
): T & Memoized>
} = Function.dual(2, >(
self: ExcludeKeys>>,
- propsAreEqual?: Equivalence.Equivalence>,
+ propsAreEqual: Equivalence.Equivalence>,
): T & Memoized> => Object.setPrototypeOf(
{ ...self, memo: true, propsAreEqual },
Object.getPrototypeOf(self),
diff --git a/packages/example/src/routes/dev/memo.tsx b/packages/example/src/routes/dev/memo.tsx
index adeb13d..f58e6ad 100644
--- a/packages/example/src/routes/dev/memo.tsx
+++ b/packages/example/src/routes/dev/memo.tsx
@@ -33,8 +33,7 @@ const SubComponent = Component.make(function* SubComponent() {
return {id}
})
-const MemoizedSubComponent = Component.memo()(SubComponent)
-console.log(MemoizedSubComponent.memo)
+const MemoizedSubComponent = Component.memo(SubComponent)
export const Route = createFileRoute("/dev/memo")({
component: RouteComponent,