diff --git a/src/either.ts b/src/either.ts
index fcba02e..67d0355 100644
--- a/src/either.ts
+++ b/src/either.ts
@@ -1,3 +1,5 @@
+import { Option } from './option'
+
/**
* Represents the failure case of an Either
* @typeParam E - The type of the error
@@ -77,6 +79,50 @@ export const fold =
(fa: Either): B =>
fa._tag === 'Left' ? onLeft(fa.left) : onRight(fa.right)
+/**
+ * Converts an Option to an Either, providing a default error for None.
+ * @typeParam A - Value type
+ * @typeParam E - Error type
+ * @param onNone - Error value for None case
+ * @returns Function that converts Option to Either
+ */
+export const fromOption =
+ (onNone: E) => (option: Option): Either =>
+ option._tag === 'Some' ? right(option.value) : left(onNone)
+
+/**
+ * Lazily converts an Option to an Either (error evaluated only when needed).
+ * @typeParam A - Value type
+ * @typeParam E - Error type
+ * @param onNone - Function returning error for None case
+ * @returns Function that converts Option to Either
+ */
+export const fromOptionL =
+ (onNone: () => E) => (option: Option): Either =>
+ option._tag === 'Some' ? right(option.value) : left(onNone())
+
+/**
+ * Converts a Promise