Haskell: Zipping una lista xs con ogni lista nell'elenco yss utilizzando applicazioni parziali e

StackOverflow https://stackoverflow.com/questions/2050109

  •  20-09-2019
  •  | 
  •  

Domanda

Ehi sto solo rivedendo per il mio esame di programmazione funzionale in arrivo il venerdì e sto solo lavorando attraverso esercizi fornite dal nostro docente. Ho incontrato una che ho neep un po 'di aiuto su:

6. a) Scrivere una funzione che comprime un dato xs lista con ogni lista in una lista yss di liste. utilizzo parziale le applicazioni e le espressioni lambda nella massima misura possibile nel definire la funzione. b) Scrivere una funzione che sfreccia ogni lista in una lista yss di liste con un dato xs lista. utilizzo parziale le applicazioni e le espressioni lambda nella massima misura possibile nel definire la funzione. La differenza tra le soluzioni alla parte A) e parte b) del presente problema illustra che in parte funzioni applicate devono prendere i loro argomenti nell'ordine corretto.

Quello che ho in questo momento per (a) è:

zipAll = (\ XS (YS: YSS) -> [(xs zip ys)] ++ zipAll xs yss)

E 'non esaustivo lo so, ma qualcuno mi potrebbe dare alcune indicazioni?

È stato utile?

Soluzione 2

Il suo bene, ho lavorato fuori:

zipList :: [a] -> [[b]] -> [[(a,b)]]
zipList = \xs yss -> c xs yss
                        where
                                c xs [] = []
                                c xs (ys:yss) = zip xs ys :zipList xs yss

Peccato solo che non avevo postato questo ora: P

Altri suggerimenti

Sembra che si sta solo trovi il tuo caso base per rendere il lavoro di funzione. Il caso base sarebbe

(\xs [ys] -> [(zip xs ys)])

Io probabilmente spostare i parametri sul lato destro dell'equazione, invece:

zipAll xs (ys:yss) = ...

ma che è solo in questione di stile.

La soluzione per parte (b) è la stessa, tranne che l'ordine dei parametri è invertita, come

zipAll (ys:yss) xs = ...
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top