Dal riferimento della versione di berkeley di sicp testo , Si dice che:
Expressing programs as sequence operations helps us design programs that are modular. That is, our designs are constructed by combining relatively independent pieces, each of which transforms a sequence. In general, we can encourage modular design by providing a library of standard components together with a conventional interface for connecting the components in flexible ways.
Ad esempio, in python, <class 'list'>
e <class 'tuple'>
sono alcuni dei tipi di modelli di dati sequenziali utilizzati per lo più per l'archiviazione.
Ad esempio, in python <class 'dict'>
è un tipo popolare di modello di dati non sequenziali.
Il riferimento del testo fornisce sotto soluzioni scritte in python a due diversi problemi e menziona come soluzione simile, che non è convincente, perché questi due problemi non potrebbero essere il campione rappresentativo per prendere questa decisione.
>>> def sum_even_fibs(n):
"""Sum the even members of the first n Fibonacci numbers."""
return sum(filter(iseven, map(fib, range(1, n+1))))
>>> sum_even_fibs(20)
3382
>>> def acronym(name):
"""Return a tuple of the letters that form the acronym for name."""
return tuple(map(first, filter(iscap, name.split())))
>>> acronym('University of California Berkeley Undergraduate Graphics Group')
('U', 'C', 'B', 'U', 'G', 'G')
Non sono ancora chiaro sulla decisione di rendere "sequenze come interfacce convenzionali" nonostante questi esempi forniti.
Quindi, Nel progettare una libreria o un componente, perché i modelli di dati di tipo sequenziale si consiglia di essere scelti come interfacce convenzionali? È qualcosa che ha a che fare con la proprietà di chiusura di questi modelli di dati sequenziali (forniti da python / scheme / lisp) ?
Nota: lo stesso consiglio è dato nel testo SICP dal MIT premere