From 608569791427310c173bdf105cef26da176ea3c3 Mon Sep 17 00:00:00 2001 From: Nat Quayle Nelson Date: Thu, 7 Aug 2025 18:18:10 -0500 Subject: [PATCH] extractOpt --- src/kiss/Kiss.hx | 1 + src/kiss/Prelude.hx | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/src/kiss/Kiss.hx b/src/kiss/Kiss.hx index 1d5bc50..c4b2d86 100644 --- a/src/kiss/Kiss.hx +++ b/src/kiss/Kiss.hx @@ -165,6 +165,7 @@ class Kiss { ], identAliases: [ // These ones won't conflict with variables and might commonly be used with (apply) + "extractOpt" => Symbol("Prelude.extractOpt"), "+" => Symbol("Prelude.add"), "-" => Symbol("Prelude.subtract"), "*" => Symbol("Prelude.multiply"), diff --git a/src/kiss/Prelude.hx b/src/kiss/Prelude.hx index edd6514..eb6acf1 100644 --- a/src/kiss/Prelude.hx +++ b/src/kiss/Prelude.hx @@ -4,6 +4,7 @@ using Std; import kiss.ReaderExp; import haxe.ds.Either; +import haxe.ds.Option; import haxe.Constraints; import haxe.DynamicAccess; #if js @@ -76,6 +77,13 @@ class Prelude { }; } + public static function extractOpt(opt:Option) { + return switch (opt) { + case Some(v): v; + default: throw 'Failed to extract Option: $opt'; + }; + } + static function _and(values:Array):Dynamic { for (value in values) { if (!truthy(value)) {