Penso che la firma di tipo sarà simile f :: a -> [Int]
dati di input sarebbe simile data NamedPoint = NamedPoint String Int Int
Esiste una funzione generica che prende una struttura dati e restituisce tutti gli interi in essa contenuti?
data Person = Name Int Int Int
e di utilizzarlo nel REPL sarebbe simile a questa:
>> let namedPoint = NamedPoint "hey" 1 2
>> let tommy = Person "Tommy" 1 2 3
>> f namedPoint
>> [1,2]
>> f Tommy
>> [1,2,3]
Penso che questo sarebbe utile come un'alternativa ai record per quando sei troppo pigro per scrivere getter per i dati con un sacco di parametri.
Se i dati in ingresso sta per essere '' NamedPoint '' perché la funzione non può essere digitata come '' f :: NamedPoint -> [Int] ''? – zegkljan
In questo caso potrebbe. Ma stavo pensando che questo comportamento potrebbe essere utile per estrarre tipi generalizzati. modifica male la mia domanda per essere più specifico. – user514156
Per questa attività, uniplate è la scelta più semplice. La tua f è semplicemente la funzione universeBi. – augustss