К основному контенту

F# Desktop UI Application

Продолжаю изучать F#. Как сказал один чел с ютюба, сравнивая ООП(C#) и ФП(F#): я не хочу делать 
трактор, я хочу делать феррари.
Ниже, пример такой возможности, правда, пока не разбирался, как в core можно заюзать FsXaml. Но 
code only тоже ничего.
Кроме того, в core дополнительный бонус в виде native-сборки путем выполнения dotnet publish --runtime linux-x64(в виндос аналогично).
Целевая платформа: Xubuntu 16.04 и MonoDevelop
Version 7.5 Preview (7.5)(собрана из исходников).
 
 
module Program
(*Пример использования кроссплатформенной FOSS Avalonia на языке F#
на базе dotnet core 2.0 
Console App + nuget install Avalonia, Avalonia.Desktop
*)
// Learn more about F# at http://fsharp.org

open System
open System.IO
open Avalonia
open Avalonia.Controls
open Avalonia.Markup.Xaml
open Avalonia.Themes.Default
open Avalonia.Styling

module Util =
    let Now() = DateTime.Now.ToString("s")

type FsApp() as this = class
    inherit Application()
    override this.Initialize() =
        this.Styles.Add(new DefaultTheme())
        let loader = new AvaloniaXamlLoader()
        let baseLight = loader.Load(new Uri("resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default"))
        let style  = downcast baseLight : IStyle
        this.Styles.Add(style)
end

type MainWindow() as this = class
    inherit Window()
    let button = new Button(Content = "OK")
    do
        button.Click.Add(fun e -> button.Content <- Util.Now())
        this.Title <- "UI Fsharp example"
        this.Content <- button
end

[<EntryPoint>]
let main argv =
    AppBuilder.Configure<FsApp>().UsePlatformDetect().Start<MainWindow>();
    0 // return an integer exit code
 
 

Комментарии

Популярные сообщения из этого блога

Кирилица в Arch Linux

После вчерашних обновлений в консоли Arch Linux при выборе русской локали вместо букв печатаются белые квадратики. Очевидно, что по какой-то причине не загружается прописанный в rc.conf шрифт. Временное лекарство от этого: выполнить команду setfont cyr-sun16 . Еще у меня в момент начальной загрузки появляется рябь на экране как от сильных электромагнитных помех в ЭЛТ, хотя у меня ЖК. Может быть это как-то связано.

Сортировка массивов в groovy

Любой массив в java и groovy можно отсортировать статическим методом: Arrays.sort(c); причем это будет очень быстро сто тысяч элементов типа int сортируются за 1 секунду на celeron M 1,8 Mg. Если это массив объектов можно использовать перегруженный метод Arrays.sort(c,comporator);

Arch Linux - руссификация консоли

Вчера, придя с работы, как всегда затеял InstallFest. Уже практически не задумываясь установил свежий арч. И тут заметил что в tty вместо русского - квадратики. Под утро нашел таки сообщение на форме, что в этом виноваты дрова от видео. Там правда речь шла о нвидиа, а у меня ати. Буду пробовать. И еще в lxterminal обратил внимание что сообщения на русском, а то что я вводил на русском потом возвращается системой в виде юникод-символов. Вот такие дела. UPDATE: драйвер не причем. переустановил в консоли(до установки X) по прежнему квадратики вместо букв. неужели придется переключатся на инглиш? Заметил что initscripts скачался c какого-то зеркала не с яндекса. возможно причина в нем.