|
|
Line 437: |
Line 437: |
|
Just "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" : STRING |
|
Just "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" : STRING |
|
</pre> |
|
</pre> |
⚫ |
=={{header|C sharp|C#}}== |
|
|
|
|
⚫ |
<lang csharp>using System; |
|
|
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
// courtesy of https://www.dotnetcurry.com/patterns-practices/1510/maybe-monad-csharp |
|
⚫ |
public abstract class Maybe<T> |
|
⚫ |
|
|
⚫ |
public sealed class Some : Maybe<T> |
|
⚫ |
|
|
⚫ |
public Some(T value) => Value = value; |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
public sealed class None : Maybe<T> { } |
|
⚫ |
|
|
|
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
static Maybe<double> MonadicSquareRoot(double x) |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
return new Maybe<double>.Some(Math.Sqrt(x)); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
return new Maybe<double>.None(); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
static void Main(string[] args) |
|
⚫ |
|
|
⚫ |
foreach (double x in new double[] { 4.0D, 8.0D, -15.0D, 16.23D, -42 }) |
|
⚫ |
|
|
⚫ |
Maybe<double> maybe = MonadicSquareRoot(x); |
|
⚫ |
if (maybe is Maybe<double>.Some some) |
|
⚫ |
|
|
⚫ |
Console.WriteLine($"The square root of {x} is " + some.Value); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
Console.WriteLine($"Square root of {x} is undefined."); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
|
|
|
|
|
=={{header|C++}}== |
|
=={{header|C++}}== |
Line 574: |
Line 527: |
|
2.5 -> 1.159279, nothing |
|
2.5 -> 1.159279, nothing |
|
</pre> |
|
</pre> |
|
|
|
|
⚫ |
=={{header|C sharp|C#}}== |
|
|
|
|
⚫ |
<lang csharp>using System; |
|
|
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
// courtesy of https://www.dotnetcurry.com/patterns-practices/1510/maybe-monad-csharp |
|
⚫ |
public abstract class Maybe<T> |
|
⚫ |
|
|
⚫ |
public sealed class Some : Maybe<T> |
|
⚫ |
|
|
⚫ |
public Some(T value) => Value = value; |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
public sealed class None : Maybe<T> { } |
|
⚫ |
|
|
|
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
static Maybe<double> MonadicSquareRoot(double x) |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
return new Maybe<double>.Some(Math.Sqrt(x)); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
return new Maybe<double>.None(); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
static void Main(string[] args) |
|
⚫ |
|
|
⚫ |
foreach (double x in new double[] { 4.0D, 8.0D, -15.0D, 16.23D, -42 }) |
|
⚫ |
|
|
⚫ |
Maybe<double> maybe = MonadicSquareRoot(x); |
|
⚫ |
if (maybe is Maybe<double>.Some some) |
|
⚫ |
|
|
⚫ |
Console.WriteLine($"The square root of {x} is " + some.Value); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
Console.WriteLine($"Square root of {x} is undefined."); |
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
⚫ |
|
|
|
|
|
|
|
|
|
=={{header|Clojure}}== |
|
=={{header|Clojure}}== |