Voglio trovare l'analogo di Haskell dell'elenco infinito in linguaggio c #. Voglio utilizzare qualsiasi interfaccia possibile per tale elenco, come questi:
IEnumerable
ICollection
IList
Voglio trovare l'analogo di Haskell dell'elenco infinito in linguaggio c #. Voglio utilizzare qualsiasi interfaccia possibile per tale elenco, come questi:
IEnumerable
ICollection
IList
Usando IEnumerable
e yield return
puoi creare facilmente serie infinite.
static IEnumerable<uint> UpDown(uint min = uint.MinValue, uint max = uint.MaxValue, uint step = 1)
{
if (min > max)
throw new ArgumentOutOfRangeException("min", "'min' must be less than or equal to 'max'");
var current = min;
var last = current;
var up = true;
while (true)
{
yield return current;
current += (uint)(up ? step : -step);
if (up && (current >= max || current < last))
{
up = !up;
current = max;
}
else if (!up && (current <= min || current > last))
{
up = !up;
current = min;
}
last = current;
}
}
static IEnumerable<int> Random()
{
while (true)
yield return 4;
}
Il tipo che più corrisponde a un elenco di tipo Haskell pigro, è IEnumerable<out T>
.