From 361de87321489f354abc3af1079bacc552dda0c0 Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Sun, 4 May 2025 23:46:05 +0200 Subject: [PATCH 1/2] fix variant design decisions --- pages/docs/manual/v12.0.0/variant.mdx | 34 ++++++++++++++++++++------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/pages/docs/manual/v12.0.0/variant.mdx b/pages/docs/manual/v12.0.0/variant.mdx index b4686173c..d226b1cfc 100644 --- a/pages/docs/manual/v12.0.0/variant.mdx +++ b/pages/docs/manual/v12.0.0/variant.mdx @@ -762,13 +762,16 @@ Performance-wise, a variant can potentially tremendously speed up your program's ```js let data = 'dog' -if (data === 'dog') { - ... -} else if (data === 'cat') { - ... -} else if (data === 'bird') { - ... +function logData(data) { + if (data === 'dog') { + ... + } else if (data === 'cat') { + ... + } else if (data === 'bird') { + ... + } } +logData(data) ``` There's a linear amount of branch checking here (`O(n)`). Compare this to using a ReScript variant: @@ -778,16 +781,29 @@ There's a linear amount of branch checking here (`O(n)`). Compare this to using ```res example type animal = Dog | Cat | Bird let data = Dog -switch data { +let logData = data => switch data { | Dog => Console.log("Wof") | Cat => Console.log("Meow") | Bird => Console.log("Kashiiin") } +logData(data) ``` ```js -console.log("Wof"); +function logData(data) { + switch (data) { + case "Dog" : + console.log("Wof"); + return; + case "Cat" : + console.log("Meow"); + return; + case "Bird" : + console.log("Kashiiin"); + return; + } +} -var data = "Dog"; +logData("Dog"); ``` From 0b14224f385f86fd12eb6f5d00a28792a879e9bf Mon Sep 17 00:00:00 2001 From: Gabriel Nordeborn Date: Sun, 4 May 2025 23:47:36 +0200 Subject: [PATCH 2/2] format --- pages/docs/manual/v12.0.0/variant.mdx | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/pages/docs/manual/v12.0.0/variant.mdx b/pages/docs/manual/v12.0.0/variant.mdx index d226b1cfc..6d7ece732 100644 --- a/pages/docs/manual/v12.0.0/variant.mdx +++ b/pages/docs/manual/v12.0.0/variant.mdx @@ -781,12 +781,15 @@ There's a linear amount of branch checking here (`O(n)`). Compare this to using ```res example type animal = Dog | Cat | Bird let data = Dog -let logData = data => switch data { -| Dog => Console.log("Wof") -| Cat => Console.log("Meow") -| Bird => Console.log("Kashiiin") +let logData = data => { + switch data { + | Dog => Console.log("Wof") + | Cat => Console.log("Meow") + | Bird => Console.log("Kashiiin") + } } logData(data) + ``` ```js function logData(data) {