Press "Enter" to skip to content

Haskell lists – FunFunFunction #39


ciao ciao mmm PJ stelle che stai guardando
divertimento fun punch in questa serie siamo
imparando Haskell insieme io
non so Haskell quindi stiamo imparando che
attraverso un ebook gratuito chiamato learn you a
Haskell c’è un link ad esso nella
descrizione qui sotto nel caso in cui a caso
inciampare su questo video e tu sei
confuso puoi vedere l’intera serie
dall’inizio facendo clic su I in
l’angolo in alto l’argomento per oggi è
elenchi è possibile trovare un collegamento a questi
capitolo specifico nel libro che questo
episodio è nella descrizione
qui sotto , saltiamoci dentro, ho come
hai fatto questo
va bene, andiamo a caricare le liste
non HS che è il file su cui stiamo lavorando
qui guardando gli elenchi dei capitoli
mi ricorda molto di cancellare in JavaScript
ma allo stesso tempo sembra anche
le liste hanno un ruolo molto più importante in
Haskell di Ray gioca in JavaScript così
questo è come si definisce una lista rimasta persa
numeri e uno due tre sei BAM e
allora vai a numeri a questo punto
il libro si presenta in ritardo ma non mi sento
come spiega esattamente a cosa serve
il libro dice che usiamo sinistra per definire
un nome nel GHC io lo so se
hai dimenticato quali nomi puoi
clicca qui per un aggiornamento sono gentili
di costanti simili o simboli di tipo
tuttavia questo mi confonde perché posso
tipo di I può appena perso i numeri due
equivale a due tre quattro sette e poi a me
può fare meno numeri uno meno numeri due
ed entrambi funzionano solo che non
Non capisco perché mi vuole perché
il libro parla di lascia che se lo sai
per favore commenta qui sotto in modo che
puoi educare me e i tuoi simili
spettatori in un modo che elenca in Haskell o
diverso dagli array è quello che cancella
JavaScript ti permette di mixare tipi ma
non sono ammessi in Haskell quindi se
l’obiettivo era JavaScript Sarei
permesso di fare come quattro otto e ciao
e questo sarebbe un array valido in
JavaScript ma non è in Haskell così
si ottiene un messaggio di errore del tipo no
istanza per num char che deriva dal
letteralmente quattro bene ho bisogno di avere solo
numeri in esso posso avere delle stringhe dentro
elenca i waffle cat e funzionerà
loro solo urlano ma loro devono solo
essere lo stesso tipo nella matrice quando I
Detto questo mi sono sentito come se le liste fossero di più
fondamentale per haskell rispetto agli array o
JavaScript una delle cose che ha fatto
mi sento come se le stringhe fossero così
elenchi effettivamente in stringhe JavaScript sono
come una cosa separata da una gara ma in
Haskell quando scrivo come questo gatto
è in realtà solo zucchero sintattico per
scrivendo questo gatto BAM OOP così in Haskell a
la stringa non è una stringa in realtà
solo un elenco di stringhe di caratteri o
elenca così un compito comune è quello di mettere due
liste insieme e perché le stringhe sono
elenchi possiamo usare la stessa funzionalità
per concatenare anche le stringhe, così facciamo
ciao gatto cialda e usiamo il vantaggio
più operatore per fare questo taglio utile così
nell’ultimo episodio ero venuto
usato per il fatto che non è possibile
solo più corde insieme che in alto
scuola come puoi nella maggior parte degli altri
linguaggi di programmazione che sono in errore
ma ora che so che le stringhe o
elenchi e si utilizza un operatore speciale per
elenchi concatenati tipo di rende un po ‘
più senso il libro mette in guardia qui su a
piccolo avvertimento sulle prestazioni quando quando
usando l’ operatore plus plus o long
stringhe quindi immaginiamo che questo fosse un
una stringa molto molto lunga per qualche motivo
e volevamo solo aggiungere un tuo conoscente
una corda molto corta alla fine
internamente Haskell sentirà come camminare
attraverso l’ intero elenco di caratteri di
personaggio prima di aggiungere il
stringa a destra questo non è molto di un
problema quando ci si sta solo occupando di esso
come fare piccole stringhe, allora non lo fai
bisogno di disturbare ma immaginare come lista
come se fosse un milione di oggetti piccoli allora
influenzerà le prestazioni del tuo
applicazione tuttavia se si dispone di una lista
questo è oh, allora puoi usare qualcosa
chiamato l’ operatore cons che è colla
e puoi aggiungere cose all’inizio
come questo, tuttavia, è istantaneo
e non ha le stesse prestazioni
caratteristiche notare quindi che il
concentratore ci vuole un singolo numero
non prende una lista il plus più
l’operatore ha bisogno di un bisogno per essere un
elenca quindi se vogliamo fare la stessa cosa
con un con un plus plus maggiore nove
qui che fallire dovremmo farlo
aggiungere liste su entrambi i lati e a causa di
questo aspetto delle prestazioni del corso
l’operatore è effettivamente utilizzato internamente da
haskell così quando faccio uno due tre questo
questo è solo zucchero sintattico internamente
Haskell scriverà che riscriverà che
come
uno contro i contro tre contro e il
elenca Punk e questo ci dà una lista con
uno due tre se si vuole ottenere un
elemento di una lista in una specifica
indice è possibile utilizzare il punto esclamativo
operatore punto esclamativo quindi se lo faccio
Mi piace sentire che otterrò e perché
questo è indice 0 indice 1 indice 2 qui e
ricorda che questi sono solo elenchi così io
potrei fare solo 1 2 3 e potrei fare
punto esclamativo indice esclamativo
2 e che mi avrebbe dato 3 perché indice
0 indice 1 indice 2 3 qui e quello dà
noi 3 proprio come gli array in JavaScript
gli elenchi in Haskell possono contenere altri elenchi
quindi possiamo fare 1 2 3 4 e questo può essere
all’interno di un’altra lista ha funzionato
e non possiamo uscire dalla seconda lista
qui guardando là e possiamo di
corso aggiungere altre liste alla nostra lista di
liste facendo questo come cinque sei boom
oh no che non funzionerà perché farlo
sarebbe come aggiungere questo e quello non lo è
permesso perché questo è questo elenco
qui questa è una lista di liste con
numeri in loro e aggiungendo numeri
direttamente a loro sarebbero i tipi di miscelazione
quindi ciò che è permesso, tuttavia, sta facendo
facendo cinque sei e una lista così ora aggiungiamo
una lista di liste con numeri in esse
ad un altro elenco che è anche un elenco di
liste con numeri in loro e così sarà
spero di lavorare con ciò che devo fare più
più sì e potrei anche farlo
il concentratore credo ma qui io
probabilmente potrebbe realmente vincere questa
sì che avrebbe funzionato le liste possono essere
confrontato se le cose che contengono
può essere confrontato per esempio che possiamo
confrontare come cinque è cinque più grandi di
sei no, non possiamo confrontare i numeri
quindi possiamo confrontare liste di
numeri così possiamo vedere se per esempio
come un tre possiamo vedere se è così
più grande di zero
ah a cui è un po ‘che siamo
andando a dare un’occhiata alle funzioni della lista
ma prima pane al caffè
Oh, quindi con le funzioni, diciamo così
abbiamo una lista come 5 4 3 2 1 che possiamo
chiama ad esempio la testa che dà
noi 5 perché questo è il primo elemento è un
Penso alla lista come un mostro che ho fatto
questo quindi questa è la testa, quindi possiamo fare
coda e che ci darà questo c’è
una coda questa è la coda della testa così tu
mi ha chiesto come si ottiene, ma tu fai
quello dicendo lista che ci darà 1
perché 1 è l’ultimo elemento poi c’è
l’inverso della funzione di coda che
è dentro così ci vai dentro e cosa
questo ti darà tutto tranne il
ma se provi a fare head on a empty
lista riceverai un errore nel tipo di sistema
di Haskell ci consente di catturare molto
errori al momento della compilazione ma questo è uno
degli errori che non possiamo e in
Haskell vogliamo evitare errori di runtime
il più possibile, quindi è buono
pratica per assicurarci che non lo siamo
passare qualsiasi corsa vuota a funzioni come
come capo di fare che abbiamo funzioni
come la lunghezza che è 0 sai come 1 2
che ci darà 2 c’è una funzione
che in realtà controlla se un array è
vuoto e questo è abbastanza funky chiamato
null quindi se non è vuoto è normale
sarà falso e se è vuoto
sarà vero che ne abbiamo altri
funzioni come di un rovescio che
non sorprendentemente invertirà la lista
c’è una funzione chiamata take
e prendere prenderà più oggetti da
l’inizio
della matrice che si specifica così dico
prendere tre e quello prenderà il primo
tre elementi dell’array non a destra
elenco ancora vivente in JavaScript terra e
sei ancora dritto se ne prendo due
prenderà i primi due oggetti se prendiamo
zero non ci darà un errore
ci darà una lista vuota per prenderne di più
di quanto esiste bene così funziona ancora se
Dico come mille che darò
tanto quanto è in vendita questo è anche
tipo di inverso di prendere che è così goccia
lascia solo i primi due elementi sul
array e restituisce il resto ci sono
funzioni come minimo ben mini mini
mamma che ci dà il numero più piccolo
e naturalmente c’è il massimo che io
non posso scrivere queste cose maxi ma
massimo che ci dà il più grande
numero e ci sono cose come alcuni
che riassume tutti i numeri e
ci sono cose come il prodotto che lo faranno
moltiplica tutti i numeri come 5 volte 4
volte 3 volte 2 volte 1 è 120 e lì
è una funzione chiamata LM che controlla se
un elemento è parte di una lista data quindi
diciamo che abbiamo 5 4 3 2 1 e
controlla che l’elemento 6 sia parte di quello no
non è
tuttavia l’ elemento 5 è o 3 alcune persone
trovare questo un po ‘difficile da leggere, quindi LM è
spesso chiamato come una funzione infisso e
agnello e poi vero se l’hai dimenticato
su errore di funzioni di fix che puoi
clicca qui
per le prove ma sono fondamentalmente
funzioni che inserirai tra le
argomenti qualsiasi funzione può essere chiamata come
una funzione infissa ma non ci sono i
normali funzioni infix o più come questo
è una funzione infix no la mia batteria è morta
sulla mia tastiera e finalmente voglio
indica qualcosa che il libro
non parla ma è molto chiaro
differenza da JavaScript perché
notare che tutto qui è come il
le funzioni sono separate dal the
lista in Haskell abbiamo lunghezza che è io
solo una funzione che prende una lista ma in
La lunghezza JavaScript è una proprietà sul
sull’oggetto array e questo mostra come
Haskell non è molto
orientato agli oggetti linguaggio è funzione
orientato è funzionale in JavaScript
e altre lingue che hanno un sacco di
Orientamento agli oggetti Stati e funzioni
sono mescolati in lunghezza e e e
gli array qui sono come combinati
insieme
tuttavia in Haskell sono puliti
avrebbe separato la stessa cosa con
esempio l’equivalente di JavaScript sarebbe
essere probabilmente una fetta che sarebbe come
0-2 e questo è tutto per oggi che hai
ho visto un episodio di fun fun function I
rilasciato questo ogni lunedì mattina oh
aspetta cento ora di Greenwich
se hai trovato questo interessante potresti
vuoi controllare il canale velocemente
si agita sotto per vedere se è qualcosa
che prenderesti in considerazione l’ iscrizione a I
sono mpj fino al prossimo lunedì mattina grazie
tu
Please follow and like us: