Od pewnego czasu miałem pomysł zrobić małą aplikację do przekierowywań, którą mógłbym umieścić na serwerze i skracać sobie URLe. Stwierdziłem, że to dobra okazja aby znowu pobawić się F#.
Wszedłem na stronę fundacji F#, na której znalazłem potrzebne mi narzędzie Suave.
Przeczytawszy kilka stron jak Suave’a używać siadłem do pisania. Wybrałem format .fsx
, czyli F# Script, którego nie trzeba kompilować. Pobrałem odpowiednią bibliotekę za pomocą NuGeta
nuget install -ExcludeVersion Suave
i po napisaniu bardzo ładnego skryptu, spróbowałem go uruchomić.
Jak można się domyślać, nie ma kodowania bez błędów. Więc i mnie się trafił
error FS0001: Expecting a type supporting the operator '>=>' but given a function type. You may be missing an argument to a function.
Słowem wstępu: w F# można tworzyć nowe operatory. Więc przeszukiwanie Googli nic mi nie dało. Przykładowy projekt ze strony Suave’a działał, więc głowiłem się co ja mogę robić nie tak.
Okazało się, że ominęła mnie jedna ważna linijka
open Suave.Operators
Operator >=>
jest w module Operators
. Co ciekawe na jego temat nie ma nic w dokumentacji API Suave’a. Rozwiązawszy ten problem poszło jak z płatka.
Znalazłem trochę już przestarzałego blog posta, dzięki któremu dodałem nową konfigurację, pozwalającą aplikacji na działanie na porcie 80 w trybie “wszechstronnego dostępu” (pod IP 0.0.0.0
).
Na koniec postanowiłem udostępnić mój twór. Nadałem mu nazwę Fedirector i opublikowałem na GitHubie: manio143/Fedirector