?

Log in

Язык программирования F#'s Journal
 
[Most Recent Entries] [Calendar View] [Friends]

Below are the 17 most recent journal entries recorded in Язык программирования F#'s LiveJournal:

Thursday, August 30th, 2012
12:30 am
[bytebuster463]
Sequential comparison in F#
В этом постинге нет крутого матана, но надеюсь, что это кому-то будет полезным с образовательной точки зрения.

Originally posted by bytebuster463 at Sequential comparison in F#

This kind of questions becomes more and more popular:

I want to simplify expression if(x == y && y == z).
I wish I could write if(x == y and z) but there is no syntax for that. What can I do?

Look at this solution. Also, is seems to be a good example of using monads, also known as Computation Expressions. Surprisingly to myself, it is fairly fast.

// Generic
let inline mOp1<'a> op sample x = op sample x, sample
let inline mOp2<'a> op1 op2 (b, sample) x = op1 b (op2 sample x), sample

// Implementation for (=) and (&&)
let (==) = mOp1 (=)
let (&=) = mOp2 (&&) (=)

// Use
let ret1 = a == b &= c &= d &= e |> fst
Read more...Collapse )

P.S. If you like it, you may upvote it on StackOverflow. :)

Sunday, July 8th, 2012
9:50 pm
[bytebuster463]
Point-free function application in F#
В коммуне по-прежнему тихо, потому подумалось, что эта мини-статья будет кому-то интересна. Не все знают, как использовать duck-typing для применения не-последнего аргумента.
Модератору: не знаю, какие метки ставить. :( И не знаю: а ссылки на SO вообще можно, да? :-)

Originally posted by bytebuster463 at Point-free function application in F#
Pointless notation in F# is a powerful mechanism for coding, allowing the source be free of burdening arguments. Combined with strong typing it makes F# code very expressive.
Say you have (+) operator which has type of int -> int -> int.
You may define your custom function:

let add2_version1 x = x + 2

This function will have type of int -> int which means it takes an int and returns an int.
This syntax is equal to:

let add2_version2 x = (+) 2 x

or

let add2_version3 x = ((+) 2) x

As we see, ((+) 2) is a function itself, and x is applied to it. So we can simplify our function:

let add2_version4 = (+) 2

But what if our operator is not symmetric, and we need to apply the first argument? Look at this question on StackOverflow:

How can I create a partial function application for a non-symmetric operator such as the modulus operator with regards to the first argument without any argument names in F#? My first attempt was let mod10 = (%) 10 which of course translates to mod10(x) = 10 mod x instead of the desired mod10(x) = x mod 10.

Certainly, this is possible!

let mod10 = (%) >> (|>) 10

How did we get it? Simple! The following expressions are equal:

let m1 x = x % 10                    
let m2 x = (%) x 10                  // x (op) y = (op) x y
let m3 x = ((%) x) 10                // f x y = (f x) y
let m4 x = 10 |>         ((%) x)     // f x = x |> f
let m5 x = ((|>) 10)     ((%) x)     // x |> f = (|>) x f
let m6 x = ((%) x)    |> ((|>) 10)   // f x = x |> f
let m7 x = (x |> (%)) |> ((|>) 10)   // (op) x = x |> (op)
let m8 x = x |> ((%)  >> ((|>) 10))  // f(x) |> g = x |> (f >> g)
let m9   =       (%)  >> ((|>) 10)   // remove formal argument
let m10  =       (%)  >>  (|>) 10    // remove unnecessary parenthesis

ЗЫ. Если Вам понравилась эта статья, можно лайкнуть по ссылке :-)
Friday, March 30th, 2012
1:14 pm
[bik_top]
F*
http://research.microsoft.com/en-us/projects/fstar/:
«F* is a new dependently typed language for secure distributed programming. It's designed to be enable the construction and communication of proofs of program properties and of properties of a program's environment in a verifiably secure way. F* compiles to .NET bytecode in type-preserving style, and interoperates smoothly with other .NET languages, including F#, on which it is based.

Self-certification of F*: We have verified the F* type checker using F* itself, using a novel bootstrapping technique called self-certification

http://research.microsoft.com/apps/pubs/?id=141708:
«We present F*, a full-fledged design and implementation of a new dependently typed language for secure distributed programming. Unlike prior languages, F* provides arbitrary recursion while maintaining a logically consistent core; it enables modular reasoning about state and other effects using affine types; and it supports proofs of refinement properties using a mixture of cryptographic evidence and logical proof terms. The key mechanism is a new kind system that tracks several sub-languages within F* and controls their interaction. F* subsumes two previous languages, F7 and Fine. We prove type soundness (with proofs partially mechanized in Coq) and logical consistency for F*.»

Via nponeccop.
Sunday, December 11th, 2011
11:34 pm
[bytebuster463]
Что-то тихо здесь
Посмотрел, что в коммуне слишком тихо, вот и попросился у уважаемого модератора права на запись. Давайте что-то обсудим, что ли. :)
Например, вот что есть в моём скромном маленьком проекте (на вебе уже живёт, но ссылку не даю, во избежание):
  1. Разбор естественного человеческого языка (тайского) с помощью FParsec. Сам автор ФПарсека, Stephan Tolksdorf, сказал, что он никогда не думал, что его детищем могут парсить натуральные языки. Скоро будет также лаосский, камбоджийский, санскрит и деванагари.
  2. Монадическая модель доказательства к логическому выводу, написанная с нуля (советы будут приняты с огромной радостью, ибо написано на коленке).
Read more...Collapse )
Tuesday, May 17th, 2011
6:35 pm
[bik_top]
Релиз Nemerle 1.0
«12 мая 2011 года вышла в свет первая версия Nemerle 1.0.

В состав инсталлятора входит:
• Компилятор командной строки ncc.exe Nemerle 1.0 для .NET 2–3.5 и Mono 2.x.
• Модуль интеграции с IDE Microsoft Visual Studio 2008.
• Nemerle Express Edition — отдельная IDE на основе Microsoft Visual Studio Shell 2008 Isolated. Данная версия не требует наличия коммерческой версии Microsoft Visual Studio 2008. Для ее установки сначала скачайте и установите Microsoft Visual Studio Shell 2008 Isolated, а затем произведите установку Nemerle 1.0. При этом нужно выбрать вариант установки «Advanced» и убедиться, что пункт «Visual Studio Express Edition» выбран.
• Стандартная библиотека Nemerle и стандартная библиотека макросов.
• Набор дополнительных макробиблиотек — Nemerle Power Pack (ComputationExpressions, Nemerle.Xml, Nemerle.Peg, Nemerle.WPF, Nemerle.Aop, Nemerle.Linq).
• Компилятор в виде .NET-компонента (Nemerle.Compiler.dll).
• Плагин к компилятору позволяющий компилировать файлы C# 4.0.»
Saturday, February 26th, 2011
2:54 pm
[bik_top]
Try F#
tryfsharp.org — это аналог tryhaskell.org. «In just a few minutes you can begin learning F# — no registration, log-ins or forms are required.»

«The F# Survival Guide» — аналог «Learn You a Haskell for Great Good!». «We wrote this book to introduce mainstream developers to the world of functional programming through the lens of F#, Microsoft's first fully-supported multi-paradigm language.»

fssnip.net. «This web site allows you to easily share F# source code snippets. It is similar to other Pastebin services, but focuses only on F#. On the other hand, it uses the F# language service to provide colorization and also generates HTML tool tips that show results of background type checking. This makes the F# code significantly more readable.»

(Via Habrahabr.)
Tuesday, January 11th, 2011
1:15 pm
[bik_top]
F# Component Design Guidelines
Draft F# Component Design Guidelines (August 2010)

«This document looks at some of the issues related to F# component design and coding. In particular, it covers:
• Guidelines for designing “vanilla” .NET libraries for use from any .NET language.
• Guidelines for F#-to-F# libraries and F# implementation code.
• Suggestions on coding conventions for F# implementation code.»
Friday, November 5th, 2010
1:56 pm
[bik_top]
The F# Compiler Source Code Drop
Дон Сайм сообщил о публикации исходников компилятора и библиотеки под лицензией Apache 2.0: http://blogs.msdn.com/b/dsyme/archive/2010/11/04/announcing-the-f-compiler-library-source-code-drop.aspx.
(via RSDN)
Sunday, April 4th, 2010
12:33 am
[bik_top]
Software People 2010
2010-04-22 в Москве пройдет конференция «Software People 2010». В числе выступающих значится и Дон Сайм с докладом «F# — Bringing Functional Programming into the Mainstream». На случай, если кто из участников сообщества будет присутствовать (что всем рекомендую, мероприятие обещает быть интересным) — убедительно прошу подробно конспектировать :)

Сергей Зефиров будет брать интервью, он предлагает задать вопросы: http://thesz.livejournal.com/1079695.html
Thursday, February 11th, 2010
2:29 am
[bik_top]
F# 1.9.9.9 February 2010 CTP
F# 1.9.9.9 February 2010 CTP
F# PowerPack — теперь отдельно на Codeplex.
(via RSDN)

Upd 2010-02-11
Microsoft Visual Studio 2010 F# Runtime 2.0 RC

Ну и к слову, недавно на channel9 вышла первая лекция Дона Сайма. Смотреть её, откровенно говоря, необязательно :) Будем надеяться, что остальные поживее будут.

Куда полезней посмотреть последнюю лекцию Эрика Мейера.
Monday, November 30th, 2009
11:47 am
[bik_top]
«Programming F#» by Chris Smith

Programming F#
Купить
В октябре вышла новая книжка «Programming F#» by Chris Smith. Подробный отзыв я написать не могу, потому что, во-первых, ещё не дочитал и, во-вторых, сейчас на работе. Но на первый взгляд книжка хороша. Не нужно продираться через кучу вводных глав с доказательством труъёвости ФП и всякой философией, можно сразу начать осваивать синтаксис. В коде автор ориентируется на актуальное состояние языка (версия компилятора — 1.9.8.0), разъясняет особенности сборки многофайловых проектов в Visual Studio 2010, касается механизмов работы .NET CLR. Чем-то напоминает YAHT.

Tuesday, October 20th, 2009
2:07 pm
[bik_top]
F# 1.9.7.8 aka October 2009 CTP
«The latest release of F# is now out! This is included in Visual Studio 2010 Beta2, released today for MSDN Subscribers, with the matching release of the F# CTP for Visual Studio 2008, and a compiler ZIP for Mono.» © Don Syme

Release Notes
Download

(via RSDN)
Sunday, October 11th, 2009
4:48 pm
[bik_top]
VSLab

VSLab — это попытка превратить связку Visual Studio + F# в MatLab:

Справедливости ради надо отметить, что на картинках всё выглядит радужнее, чем в действительности :) Документации мало (зато открыты исходники), готовые viewlet'ы не так хорошо кастомизируются, как хотелось бы (зато можно писать свои). Если заинтересует, начните с туториала и пройдитесь по официальному блогу.

Saturday, May 23rd, 2009
4:33 pm
[bik_top]
F# 1.9.6.16
2009-05-20 стала доступна для скачивания Visual Sudio 2010 beta 1. Одновременно с ней вышел F# May 2009 CTP, который зафиксировал ту версию компилятора, которая вошла в бету Студии.

Microsoft F# Developer Center
├──Скачать F# May 2009 CTP
└──Дон Сайм о новых фичах
   └──Предварительная документация в MSDN
Monday, April 13th, 2009
2:02 am
[bik_top]
F# в блогах
The Hub:
http://cs.hubfs.net/blogs/

Tomas Petricek, автор книжки «Functional Programming for the Real World»:
http://tomasp.net/blog/

Luca Bolognese, автор отличной презентации на PDC 2008:
http://blogs.msdn.com/lucabol/

Don Syme, создатель языка F#, автор книжки «Expert F#»:
http://blogs.msdn.com/dsyme/

Chris Smith, автор книжки «Programming F#»:
http://blogs.msdn.com/chrsmith/

Strange Lights, Robert Pickering, автор книжки «Foundations of F#»:
http://strangelights.com/blog/

F# News, Jon Harrop, автор книжки «F# for Scientists»:
http://fsharpnews.blogspot.com/

Did it with .NET, Dustin Campbell:
http://diditwith.net/

Luke Hoban:
http://blogs.msdn.com/lukeh/

Brian McNamara:
http://lorgonblog.spaces.live.com/

Kean Walmsley, сотрудник Autodesk:
http://through-the-interface.typepad.com/through_the_interface/f/

Jomo Fisher:
http://blogs.msdn.com/jomo_fisher/
Wednesday, April 1st, 2009
1:29 am
[bik_top]
Интервью с Доном Саймом
На RSDN дали ссылку на интересное интервью с разработчиком F#:
http://www.infoq.com/interviews/F-Sharp-Don-Syme
Интервью свёрстано довольно удобно — можно одновременно смотреть интервью и читать стенограмму, весьма упрощает восприятие речи на слух.
Tuesday, January 27th, 2009
5:24 am
[bik_top]
F# presentations

По ссылке — отличное введение в F#. Даже если вы далеки от ML-подобного синтаксиса, освоите 2/3 языка уже через 20 минут ;) Настоятельно советую посмотреть презентацию хотя бы потому, что докладчик — уж больно харизматичный персонаж, по всей видимости, итальянец. («Игрек» он называет «ипсилоном», что куда приятнее дурацкого английского «вай».) Характерный говоррр напомнил Анну Наваррро из «Deus Ex» и Infected Mushrooms в «Converting Vegetarians». А ещё вспомнились уроки английского в младшей школе, с безобразным коверканьем языка для воспроизведения тошнотворной английской фонетики. Зачем нас так мучали, если можно вполне прилично изъясняться как Люка без насилия над дикцией?

Отмечу катастрофически удобный вид майкрософтовских презентаций, на них совмещены сам докладчик, слайды и скринкаст. Хотелось бы, чтобы все организаторы конференций брали на вооружение такой подход.

Image and video hosting by TinyPic По F# были доклады и на Платформе 2009. Правда, для скачивания надо залогиниться по Windows Live ID или Open ID. Если вам понравились какие-то презентации с этих или других конференций — давайте ссылки, желательно с небольшой аннотаций. (Всё ведь не пересмотришь, хотелось бы какое-то обоснование целесообразности траты времени.)

X-posted from http://bik-top.livejournal.com/31688.html

About LiveJournal.com