Jednym z większych feature’ów w Great# mają być typy wyższych rodzajów - z angielskiego Higher Kinded Types (HKT). Poniżej przedstawiam co to i jak wyglądają różne podejścia do ich implementacji.
Czytaj dalej Typy wyższych rodzajówKategoria: Great#
Funkcyjnie znaczy czysto
Powiemy, że język funkcyjny jest czysty (ang. pure) jeśli funkcje nie mogą mieć efektów ubocznych (zmiana stanu, wywołania systemowe), a jedyny sposób, żeby te efekty osiągnąć jest przez wykorzystanie monad. Planując architekturę języka Great# postanowiłem, że jego funkcyjna część będzie właśnie czysta.
Czytaj dalej Funkcyjnie znaczy czystoDuck typing i inferencja
Spędziłem cały dzień, a może nawet więcej, myśląc o tym jak rozwiązać problem dostarczenia jak najbardziej generycznego rozwiązania inferencji typów w Great#. Poniżej omawiam sytuację oraz plusy i minusy kilku rozwiązań.
Czytaj dalej Duck typing i inferencjaPróby ulepszenia C#
Planując semantykę Great# zacząłem szukać jak inni podeszli w swoich implementacjach do problemów z którymi się borykam. Na CLR zostało napisanych wiele języków. Poniżej kilka wartych poznania.
Czytaj dalej Próby ulepszenia C#Gramatyki czułe na wcięcia
Ostatnio wspomniałem o moim planie na stworzenie nowego języka programowania, który będzie “lepszym” C#/F#. Great# będzie językiem, w którym wcięcia są częścią gramatyki. Wobec tego potrzebuję narzędzia, aby taką gramatykę opisać i sparsować.
Czytaj dalej Gramatyki czułe na wcięciaProgramowanie bez pisania typów
Języki takie jak Java, C#, czy C++ wymagają od użytkownika pisania dużej ilości typów. Adwokaci języków dynamicznych takich jak Python czy Ruby mówią, że mogą szybciej pisać i modyfikować programy nie działając na typach. Ja uważam, że dynamiczne języki pozwalają na masę błędów programisty, pozwalając mu pisać kod, który po uruchomieniu jest skazany na porażkę.
Czytaj dalej Programowanie bez pisania typów