Jaki język funkcyjny?

(* możesz oddać maksymalnie 2 głosy)
Haskell
25%
25% [13]
Scala
35%
35% [18]
Elixir
20%
20% [10]
Elm
2%
2% [1]
Clojure
8%
8% [4]
OCaml
2%
2% [1]
F#
8%
8% [4]
PureScript
0%
0% [0]
Erlang
0%
0% [0]
1programmer
  • Rejestracja:prawie 5 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Wrocław
  • Postów:499
3

Chciałbym zapoznać się z programowaniem funkcyjnym i zastanawiam się nad językiem, który mi na to pozwoli. Sprawdzałem Scalę, ale przez możliwość pisania w nim OOP uznałem, że będzie mnie zwodzić w tę stronę oraz sprawdzałem Elma i fajnie się w nim pisze, ale czytałem, że jest pozbawiony wielu featurów. Haskell pewnie okaże się dla mnie zbyt skomplikowany, a też nie chcę dla zajawki poświęcać na to więcej czasu, niż na język, w którym obecnie pracuję, bo jeszcze bardzo wielu rzeczy nie wiem.

Z tego co tam na razie wypatrzyłem, to skłaniał bym się ku Elixirowi najbardziej albo Clojure, Racket. Jaki język polecacie?


Programować muszę, bo się uduszę
edytowany 1x, ostatnio: 1programmer
LukeJL
przydałaby się ankietka, żeby można było oddać głos albo zobaczyć, jak inni głosowali.
LukeJL
jeszcze przydałoby się więcej języków do ankiety, bo np. Ocaml i inne też sa funkcyjne.
SA
  • Rejestracja:około 12 lat
  • Ostatnio:około 2 godziny
  • Postów:1430
4

Ale po co chcesz programować funkcyjnie? Jeśli chodzi o poszerzenie horyzontów to wg mnie lepiej iść w stronę silnie, statycznie typowanych - Haskell, OCaml, F#, Scala. Z naciskiem.na Haskell, bo ma elegancka składnie i wszystko czego można oczekiwać od języka funkcyjnego. Może za wyjątkiem typów zależnych, ale w razie czego Idris wygląda jak Haskell.

elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:12 dni
2

Haskell FTW. Jak tylko przebrniesz przez nieco nieintuicyjne komunikaty o błędach powinno być spoko. Najlepszy język jaki znam. Scala też jest spoko jeśli nie chcesz zbytniej zmiany.


jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
4

Haskell. Dużo materiałów do nauki, dobrej jakości. W odróżnieniu od Scali nie robi się "imperatywnych skrótów".
Do tego jest prosty - można sobie zrobić ten Haskell skomplikowanym... ale nie trzeba.


jeden i pół terabajta powinno wystarczyć każdemu
PerlMonk
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Warszawa 🐪
  • Postów:1719
3

Perl. Można napisać coś przydatnego a nie tylko zabawki.


Nie sztuka uciec gdy w dupie sztuciec. 🐪🐪🐪
Zobacz pozostałe 3 komentarze
PerlMonk
Zawsze można polecać coś, z czym kompletnie nie miało się do czynienia. A nie... zaraz :D
S9
Albo jak się nie ogarnia FP to wtedy nie pisac o FP.
PerlMonk
To nie pisz.
S9
Ostro, lecz nie celnie.
PerlMonk
To fajnie.
ZD
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:2310
0
PerlMonk napisał(a):

Perl. Można napisać coś przydatnego a nie tylko zabawki.

Jakby nie kręcić nosem, historia potwierdza


If you put a million monkeys at a million keyboards, one of them will eventually write a Java program - the rest of them will write Perl
S4
  • Rejestracja:około 3 lata
  • Ostatnio:ponad rok
  • Postów:1268
3

Erlang - fajnie płacą jak już jest praca w tym języku. Trochę odżył przez blockchaina

edytowany 1x, ostatnio: S4t
SW
Telco robi sporo w Erlangu ale nie płacą sporo, jakieś 50% więcej można wyciągnąć w corpo javie
Aventus
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
0

Ja bym się podpiął pod temat, dodając od siebie że chyba w przypadku nauki FP sam język nie ma aż takiego znaczenia co dostępność materiałów do nauki tego paradygmatu w tym właśnie języku. A z tego co sam jakiś czas temu próbowałem to już nie wygląda tak kolorowo. Ja wybrałem F# jako że na codzień używam C#, więc pozostanie w tym samym środowisku (.Net, Visual Studio ) to o jedną przeszkodę w nauce mniej. Problem w tym że tak naprawdę materiałów do nauki od podstaw do napisania jakiejś konkretnej aplikacji w zasadzie nie ma. Trzeba więc zbierać strzępki informacji z różnych źródeł, które często są przestarzałe.

Jeśli ktoś ma jakiś język FP do którego jest jakiś dobry kurs/książka gdzie ucząc się tego języka, uczymy się również paradygmatu i to wszystko praktycznie, pisząc jakąś aplikację (np. aplikacja webowa), to proszę o sugestie.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
elwis
  • Rejestracja:ponad 18 lat
  • Ostatnio:12 dni
0
Aventus napisał(a):

Ja bym się podpiął pod temat, dodając od siebie że chyba w przypadku nauki FP sam język nie ma aż takiego znaczenia

O ile nie będzie to Java. xD


Aventus
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
1

@elwis: wiadomo :P Może źle sformułowałem co miałem na myśli. Oczywiście chodzi o język funkcyjny, który czym bardziej utrudnia pisanie nie-funkcyjne tym lepiej. Ale równie ważnym kryterium jest dostępność porządnych materiałów do nauki- nie tylko nauki składni, ale właśnie praktycznej nauki programowania funkcyjnego.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
Riddle
Administrator
  • Rejestracja:prawie 15 lat
  • Ostatnio:około 9 godzin
  • Lokalizacja:Laska, z Polski
  • Postów:10056
2

Fajne są funkcyjne języki, nie daj się odciągnąć od pomysłu. Ja bym szedł w Clojure albo Haskell. ClojureScript też jest fajny.

99xmarcin
  • Rejestracja:prawie 5 lat
  • Ostatnio:4 miesiące
  • Postów:2420
3

Polecę to na czym się znam, czyli Scalę. Wersja 3.0 jest już całkiem przyzwoita, ma porządne IDE (IntelliJ), można budować SBT lub Gradle, działa debugger. Ale najlepszy "selling point" to możliwość użycia prawie każdej Javowej biblioteki. Poza tym biblioteka ZIO jest jedną z najnowszych innowacji jeżeli chodzi o komercjalizację programowania funkcyjnego. Także Scala 3.0 + ZIO.

Wady: przekombinowany kod bibliotek (ale i tak jest o niebo lepiej niż w Haskellu), dramy (select_random(kobiety_w_it, lgbt, code_of_conduct, black_lives_matter)) w społeczności.
Czytelność kodu również pozostawia wiele do życzenia, czasami trzeba się nieźle namęczyć żeby zrozumieć o co autorowi chodziło (niestety jest to wada wszystkich funkcyjnych języków programowania o mocy HKT), przykład: https://github.com/scala/scala/blob/2.13.x/src/library/scala/concurrent/Future.scala#L859

Z innych próbowałem Haskella i niestety muszę przyznać że język super (niektórzy mówią Haskell to język XXII wieku), ale cała otoczka liby, ide są strasznie mizerne.

Na studiach bawiłem się LISPem. W ankiecie mamy niestety tylko Clojure ale brak CommonLisp'a. Generalnie te same problemy co w Haskellu w przypadku CommonLisp'a - ale język warto znać, choćby ze względu na swoistą składnie.

Jakbym był .NET'owcem to bym brał F#. Co prawda brak (jak ostatni raz sprawdzałem) HKT ale dzięki temu mamy łatwiejsze wejście do programowania funkcyjnego.


Holy sh*t, with every month serenityos.org gets better & better...
jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:20 minut
  • Postów:3460
2

Zastanawia mnie jednak kwestia podejścia. Czy nie lepiej uczyć się takiego paradygmatu na języku jaki się zna? Nie trzeba się wtedy męczyć z całą otoczką, stawianiem środowiska, konfiguracją IDE, nauką kruczków danego języka?
Ja np. na co dzień robię w PHP. Kiedyś znalazłem tą książkę: https://www.amazon.pl/Functional-Programming-PHP-2nd-architect/dp/1940111463
I próbowałem trochę pokodować.
Czy jednym słusznym podejściem jest odcięcie pępowiny i przejście na inny język, dedykowany konkretnemu paradygmatowi?

99xmarcin
Lisp pokazuje że FP w jezykach bez typów jest możliwe, niemniej typowany język FP to zupełnie inna jakość pracy. Zwłaszcza że typów prawie wcale się nie używa po prostu "same" się pojawiają.
Althorion
Moderator C/C++
  • Rejestracja:prawie 10 lat
  • Ostatnio:około 15 godzin
  • Postów:1603
1

Właśnie, jest jakieś dobre IDE do Haskella? Albo może czy jest jakieś haskellowe LSP wysokiej jakości?

Jak się z tym miziałem milion lat temu, to spod Emaksa, i trochę cierpiałem przy tym.

1programmer
  • Rejestracja:prawie 5 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Wrocław
  • Postów:499
2

@jurek1980: No właśnie czytam teraz o programowaniu funkcyjnym w Typescripcie. Pisał ktoś funkcyjnie w TSie? Jakie wrażenia?

Chyba i tak lepiej samą naukę FP ogarniać w czystym języku. Spróbuję chyba Haskella na podstawie tego co piszecie, a jak się odbiję, to może Scalę. Clojure mnie kusił przez składnie Lispa, ale nie jest statycznie typowany, więc raczej dam sobie spokój.


Programować muszę, bo się uduszę
Aventus
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
2
jurek1980 napisał(a):

Zastanawia mnie jednak kwestia podejścia. Czy nie lepiej uczyć się takiego paradygmatu na języku jaki się zna? Nie trzeba się wtedy męczyć z całą otoczką, stawianiem środowiska, konfiguracją IDE, nauką kruczków danego języka?
(...)
Czy jednym słusznym podejściem jest odcięcie pępowiny i przejście na inny język, dedykowany konkretnemu paradygmatowi?

Moim zdaniem to drugie, bo będąc rzuconym na głęboką wodę łatwiej uniknąć pisania w znanym już sobie paradygmacie. Poza tym- i to bardzo ważne- języki funkcyjne często mają różne właściwości i funkcjonalności których inne języki nie mają. Da się to obejść tworząc jakieś inne implementacje które będą przypominać odpowiedniki z języków funkcyjnych, ale to raczej robota dla kogoś kto już zna FP, a nie dla kogoś kto dopiero się uczy. Pierwszy przykład jaki mi przychodzi do głowy to Discriminated Unions w F#, i ich brak w C#.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
IK
  • Rejestracja:ponad 7 lat
  • Ostatnio:prawie 2 lata
0

Nie znam wszystkich tych języków, ale Elixir jest całkiem przyjemy. Zdecydowanie niższy próg wejścia niż Haskell. Erlang to praktycznie Elixir z gorszą składnią.

jurek1980
  • Rejestracja:ponad 8 lat
  • Ostatnio:20 minut
  • Postów:3460
2

No właśnie, czytam tu wątki i pytania o IDE do Haskella, informacje typu "jest debugger". No jak żyć bez debuggera, można coś printowac, ale czego obawiam się, że po 3 dniach szukania IDE, konfiguracji itd. po prostu człowiek ma dość, a nawet nie zaczęło się tematu. No nic, jak mnie kiedyś znów najdzie to spróbuję języka dedykowanego do FP.
Po prostu miałem podobne pytania co OP i chciałem ten temat troszkę rozszerzyć.

SA
  • Rejestracja:około 12 lat
  • Ostatnio:około 2 godziny
  • Postów:1430
3
jurek1980 napisał(a):

No właśnie, czytam tu wątki i pytania o IDE do Haskella, informacje typu "jest debugger". No jak żyć bez debuggera, można coś printowac, ale czego obawiam się, że po 3 dniach szukania IDE, konfiguracji itd. po prostu człowiek ma dość, a nawet nie zaczęło się tematu. No nic, jak mnie kiedyś znów najdzie to spróbuję języka dedykowanego do FP.
Po prostu miałem podobne pytania co OP i chciałem ten temat troszkę rozszerzyć.

Debugging step by step w Haskellu? To jest inny świat, tam nie ma step by step. Jak się kompiluje to znaczy, że działa.

VS Code wg mnie bardzo dobrze sobie radzi z Haskellem.

Haskell jest wręcz idealny do nauki. Jest bardzo dużo źródeł, świetnych książek, artykułów, większość konceptów funkcyjnych pokazuje się na Haskellu. Tooling, IDE itd. to mogły by być istotne przy pisaniu dużych projektów, a nie na nauce, gdzie cały kod może mieścić się na jednym ekranie. A próg wejścia jest minimalny - ghci + putStrLn i mamy Hello World.

jurek1980
No to trzeba spróbować w takim razie
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
5

IDE do haskella.

Będziecie się śmiać... IntelliJ - serio. Szału nie robi, ale jest nawigacja po kodzie i podpowiadanie, mi wystarczało.
VSC podobno nawet lepszy, ale nie używam (nie daje rady ze skrótami klawiszowymi).

https://betterprogramming.pub/haskell-vs-code-setup-in-2021-6267cc991551


jeden i pół terabajta powinno wystarczyć każdemu
edytowany 1x, ostatnio: jarekr000000
Althorion
Nie będę, ja spod tego Rusta piszę. :P I ogólnie wysoko cenię ich IDE.
Aventus
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
0

Jak się kompiluje to znaczy, że działa.

Słyszałem już ten argument wielokrotnie ale nadal ciężko mi w to uwierzyć. Mam wrażenie że to trochę widzenie świata FP przez różowe okulary, i pomijanie tego co napisane małym druczkiem ;)

gdzie cały kod może mieścić się na jednym ekranie

No i to jest właśnie ten problem. Ja chcę się uczyć na rzeczywistych przykładach, np. funkcyjnie pisząc serwis webowy. Nie pisząc krótkie przykłady na kilka(naście ) linii kodu.


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
edytowany 1x, ostatnio: Aventus
SA
To był trochę żarcik, ale im bardziej dokładne typy to tym więcej jest w tym prawdy. Niemniej, o tym czy program działa czy nie to ja bym patrzył na testy, a nie debuggujac.
Aventus
@Saalin: edytowałem post dopisując na temat jeszcze jednej kwestii. Możesz odpowiedzieć? Może są takie kursy które spełniają mój wymóg?
jurek1980
Nie zaczynamy wątku o TDD tutaj może.
SA
  • Rejestracja:około 12 lat
  • Ostatnio:około 2 godziny
  • Postów:1430
1
Aventus napisał(a):

No i to jest właśnie ten problem. Ja chcę się uczyć na rzeczywistych przykładach, np. funkcyjnie pisząc serwis webowy. Nie pisząc krótkie przykłady na kilka(naście ) linii kodu.

Wg mnie to błąd. To tak jakby ktoś kto pisze swoje pierwsze programy dostał radę, żeby wziął się za REST a klas i obiektów douczy się później.

Pisanie REST w dowolnym języku jest łatwe. Bierzesz bibliotekę i masz. Możesz jej nawet nie rozumieć. Ucząc się funkcyjnego trzeba to rozumieć- po co innego się go uczyć?

A przykłady na kilkanaście linii kodu, np. RWS, reverse state monad, jakieś zippery, cykliczny bufor w haskellu, parsery mondyczne, monad transformers, optykki, przykłady na wykorzystanie GADT to już w kilkunastu linijkach będą powodować bol głowy i dluzsza rozmine. W dużych programach ludzie pomijają skomplikowane rzeczy, bo ktoś już to zrobił za nich.

edytowany 1x, ostatnio: Saalin
Aventus
  • Rejestracja:prawie 9 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:UK
  • Postów:2235
0

@Saalin: nie do końca. Co z tego że nauczę się składni jakiegoś języka i teoretycznych zagadnień typu pisanie czystych funkcji, skoro szybko zderzę się z rzeczywistością kiedy będę chciał napisać web endpoint lub wypisać coś do konsoli, czyli będę miał efekty uboczne?


Na każdy złożony problem istnieje rozwiązanie które jest proste, szybkie i błędne.
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
4

Co do deguggera.
Pracuję od iluś miesięcy jako głównie haskell developer i potrzeby debugowania w pracy nie miałem nigdy. Główny problem to faktycznie taki, że kod się nie kompiluje, bo jak się skompiluje to już problemu nie ma. A jakby co to są testy.

Natomiast, kiedy napierniczałem advent of code w haskellu to faktycznie - kilka razy się debugger przydał, używałem ghci debuggera (command line). Trochę bieda.


jeden i pół terabajta powinno wystarczyć każdemu
stivens
  • Rejestracja:ponad 8 lat
  • Ostatnio:30 minut
0
Aventus napisał(a):

@Saalin: nie do końca. Co z tego że nauczę się składni jakiegoś języka i teoretycznych zagadnień typu pisanie czystych funkcji, skoro szybko zderzę się z rzeczywistością kiedy będę chciał napisać web endpoint lub wypisać coś do konsoli, czyli będę miał efekty uboczne?

ale to kwestia kolejnosci a nie calkowitego ominiecia tematu


λλλ
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
4
Aventus napisał(a):

@Saalin: nie do końca. Co z tego że nauczę się składni jakiegoś języka i teoretycznych zagadnień typu pisanie czystych funkcji, skoro szybko zderzę się z rzeczywistością kiedy będę chciał napisać web endpoint lub wypisać coś do konsoli, czyli będę miał efekty uboczne?

Nie będziesz miał efektów ubocznych, jeśli zrobisz to po haskellowemu - da się.

Trzeba rozróżnić język - od implementacji/ runtime. Haskell pozwala Ci pisać (prawie) wszystko zupełnie czysto (bez efektów ubocznych). Mimo, że kiedy kod już działa to faktycznie jakieś tam rzeczy w hardware się dzieją (olaboga).

(aczkolwiek w GHC są haki pozwalające pisać nieczysto (np. unsafePerformIO)).


jeden i pół terabajta powinno wystarczyć każdemu
SA
  • Rejestracja:około 12 lat
  • Ostatnio:około 2 godziny
  • Postów:1430
1

To moze ja powiem tak, najpierw to, a pozniej web service (niekoniecznie do poziomu expert ofc :P) natomiast ludzie z reguły zostają na novice bo udało im się folda użyć.

screenshot-20220325104100.png

edytowany 2x, ostatnio: Saalin
Althorion
Kurde, to ja już Advanced Beginner jestem, tak na to patrząc, a w językach FP to może z tysiąc linii do kupy napisałem, jak nie mniej. No chyba że liczymy konfigurację lispową do Emaksa, ale i tak to mi wiele wyniku nie podbije…
jarekr000000
  • Rejestracja:ponad 8 lat
  • Ostatnio:około 3 godziny
  • Lokalizacja:U krasnoludów - pod górą
  • Postów:4707
1

To moze ja powiem tak, najpierw to, a pozniej web service (niekoniecznie do poziomu expert ofc :P) natomiast ludzie z reguły zostają na novice bo udało im się folda użyć.

Nie zgadzam się zupełnie.
Nawet zupełne podstawy wystarczą, żeby robić jakies web serwicy w Haskellu ... i uczyć się praktycznie jak wygląda to całe fp.
(Btw. pracuje na full etat funkcyjnie i jestem gdzieś na poziomie competent... - robimy webserwisy i dużo innych rzeczy, które nawet działają).


jeden i pół terabajta powinno wystarczyć każdemu
SA
  • Rejestracja:około 12 lat
  • Ostatnio:około 2 godziny
  • Postów:1430
0
jarekr000000 napisał(a):

To moze ja powiem tak, najpierw to, a pozniej web service (niekoniecznie do poziomu expert ofc :P) natomiast ludzie z reguły zostają na novice bo udało im się folda użyć.

Nie zgadzam się zupełnie.
Nawet zupełne podstawy wystarczą, żeby robić jakies web serwicy w Haskellu ... i uczyć się praktycznie jak wygląda to całe fp.
(Btw. pracuje na full etat funkcyjnie i jestem gdzieś na poziomie competent... - robimy webserwisy i dużo innych rzeczy, które nawet działają).

Pierwsze pytanie jakie zadałem w wątku to po co się uczyć funkcyjnego? Ja zakładam, że dla poznania nowych rzeczy, a nie żeby mieć kolejny język do klepania. Czy da się w Javie, nie znając praktycznie Javy pisać w Springu? No pewnie, że się da. Ale z jakiegoś powodu ludzie hejtują taki sposób nauki.

1programmer
  • Rejestracja:prawie 5 lat
  • Ostatnio:3 minuty
  • Lokalizacja:Wrocław
  • Postów:499
0

@Saalin: Tak, jest tak jak mówisz. Nie planuję zmieniać języka, jestem ciekawy jak się pisze funkcyjnie, a podobno można z tego wynieść wiedzę, która pomoże w pracy w TS/JS.


Programować muszę, bo się uduszę
Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)