Thread View: pl.comp.lang.funkcyjne
3 messages
3 total messages
Started by Marcin Gajda
Sun, 22 Jun 2003 12:50
[Haskell] $
Author: Marcin Gajda
Date: Sun, 22 Jun 2003 12:50
Date: Sun, 22 Jun 2003 12:50
30 lines
2157 bytes
2157 bytes
Witam, z powodu moich problemów z gv na PLD nie mogę sobie poczytać manuali, więc pytam się tutaj: przeglądając ostatnio comp.lang.functional ujrzałem funckję Tomka Zielonki zawierającą operator $!. Z kontkestu oraz z jednego z późniejszych maili (przede wszystkim ;)) zorientowałem się, że taki operator wymusza na kompilatorze wyliczanie czegoś tam od razu, a nie czekanie na moment, gdy to jest potrzebne (np. opisany w tym wątku problem (((0+1)+1)+..). To więc kojarzę. Zauważyłem jednak, że w paru przykładowych programach pojawił się operator $ używany też przed argumentami wołanych funkcji. Czy ktoś z Grupowiczów mógłby mi wyjaśnić jego znaczenie? I, czy jest to coś standardowego w Haskellu, czy rozszerzenie któregoś z kompilatorów (a może wszystkich?)? I tak przy okazji - jeszcze jedna drobna rzecz, mianowicie znaczek @ w definicjach równości, przed =. Np. zapis f l@(h:t) oznacza, że l, to jest to samo, co (h:t), tylko na dwa sposoby zapisane i potem można odwoływać się do tego, co bardziej pasuje? Mylę się? Gentle introduction... jakoś tak po macoszemu potraktowało wprowadzenie tego znaczka (operatora?). Chyba, że coś przeoczyłem. Dzięki za wszelkie uwagi. -- Marcin Gajda ________________________ Linux registered user #300108________ Dieu me pardonerra - c'est son metier
Re: [Haskell] $
Author: Marcin 'Qrczak' Kowalczyk
Date: Sun, 22 Jun 2003 13:09
Date: Sun, 22 Jun 2003 13:09
35 lines
1925 bytes
1925 bytes
Marcin Gajda wrote:
> Zauważyłem jednak, że w paru przykładowych programach pojawił się operator
> $ używany też przed argumentami wołanych funkcji.
f $ x = f x
Priorytet $ pozwala często uniknąć nawiasów, np.
foo x = bar $ case g x of
... -> ...
... -> ...
Bez $ trzeba by otworzyć nawias i zamknąć na końcu.
> I, czy jest to coś standardowego w Haskellu,
Tak.
> I tak przy okazji - jeszcze jedna drobna rzecz, mianowicie znaczek @ w
> definicjach równości, przed =. Np. zapis f l@(h:t) oznacza, że l, to
> jest to samo, co (h:t), tylko na dwa sposoby zapisane i potem można
> odwoływać się do tego, co bardziej pasuje?
Tak. To jest to samo co f (h:t) (tzn. może być też obok alternatywna
definicja dla []), tyle że jeśli chcemy odwołać się do tego argumentu
w całości, to nie trzeba z powrotem składać go z h:t, tylko mamy go pod
jednym identyfikatorem l.
To samo w OCamlu pisze się (h::t as l), a w SML-u (l as h::t).
--
__("< Marcin Kowalczyk
\__/ qrczak@knm.org.pl
^^ http://qrnik.knm.org.pl/~qrczak/
Re: [Haskell] $
Author: Marcin Gajda
Date: Sun, 22 Jun 2003 13:25
Date: Sun, 22 Jun 2003 13:25
8 lines
1015 bytes
1015 bytes
> f $ x = f x [..] Dzięki! -- Marcin Gajda ________________________ Linux registered user #300108 _______ Dieu me pardonerra - c'est son metier
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads