This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class IdentitySwitch { | |
public static void main(String[] args) { | |
String s = "unchanged"; | |
System.out.println(s); | |
foo(s); | |
System.out.println(s); | |
} | |
public void foo(String s) { | |
s = "changed" |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class DoublePointer { | |
String s; | |
public DoublePointer(String s){ | |
this.s = s; | |
} | |
} | |
public class IdentitySwitch { | |
public static void main(String[] args) { | |
DoublePointer dp = new DoublePointer("unchanged"); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
class SkipList { | |
data class Node<Value>(val id: Value, val children: MutableList<Node<Value>> = mutableListOf()) | |
abstract class Value<T>(val value: T) { | |
abstract fun distance(other: T): Int | |
} | |
class IntValue(id: Int) : Value<Int>(id) { | |
override fun distance(other: Int): Int = kotlin.math.abs(this.value - other) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// A common example of a functor in Scala is the Option type. | |
// In Scala, Option is a functor because it provides the map method, which allows you to | |
// apply a function to the value inside an Option while preserving its structure. | |
val someNumber: Option[Int] = Some(3) | |
val incremented: Option[Int] = someNumber.map(_ + 1) | |
println(incremented) // Value transformed while structure is preserved | |
// Similarly List is a Functor | |
val numbers = List(1, 2, 3) | |
val doubled = numbers.map(_ * 2) |
OlderNewer