Snippets created by nagat01

  • Minesweeper in 99 lines of code

    This program is written in only 99 lines of actual code and remains enough readability. I used few short-coding technics. 1. no XAML. 2. pre-calculate every useful data for the purpose of eliminating useless states 3. using record type with set property as an alternative of view-model 4. initialize everything in one place. 5. encapsulate all states in one place.

    17 people like this

    Posted: 13 years ago by nagat01

  • Yet another Tennis Kata

    It's a joke one liner implementation of Tennis Kata.Please see this code not seriously.

    1 people like this

    Posted: 13 years ago by nagat01

  • Bi directional map

    Bi directional map to implement toString and fromString function for descriminated unions.

    4 people like this

    Posted: 13 years ago by nagat01

  • Simple typeclass implementation

    I learned how to implement this by reading this great good project http://code.google.com/p/fsharp-typeclasses/ But I can't understand why the project needs ternary operator. I used binary operator and seems it's okay.

    6 people like this

    Posted: 12 years ago by nagat01

  • Loading .fs files

    This script facilitates to load all the .fs files in the specified F# project in correct compilation order.

    5 people like this

    Posted: 12 years ago by nagat01

  • Speech Stackoverflow article automatically

    This snippet automatically speeches text of question,answers and comments in a Stackoverflow article. It requires HtmlAgilityPack(available from Nuget package manager).(Attention: You need reset F# interactive to stop the speech)

    6 people like this

    Posted: 12 years ago by nagat01

  • Placeholder syntax for binary operators

    Placeholder syntax like scala or clojure. It can be used when the situation point-free style can't be applied. It only works for binary operators. But it's quite simple and can be used somewhat.

    1 people like this

    Posted: 11 years ago by nagat01

  • Toml parser (untyped)

    Untyped version of toml parser. The lines of code was reduced 173 to 45. It's based on some implementations in other languages (https://github.com/mojombo/toml#implementations). I was surprised that even a parser written in Objctive-c was simpler than mine (http://fssnip.net/jd). Then I read some others code and found that removing types which describes toml values simplifies the implementation. The code may seem little crazy, but I'm fine :)

    0 people like this

    Posted: 11 years ago by nagat01

  • Cartesian product in sequence expression

    Sequence expression which deals with cartesian product of sequences with for ... do expression. It replaces nested for .. do expression to single one.

    0 people like this

    Posted: 11 years ago by nagat01

  • Alternative ways to do some suggestions on F# user voice site.

    I read all the suggestions on http://fslang.uservoice.com/ . They are great suggestions! I found some of then are realized well by using current language features. Then I introduce them.

    6 people like this

    Posted: 10 years ago by nagat01

  • Calculate PI number

    PI number calculation based on the wikipedia page(http://en.wikipedia.org/wiki/Pi#cite_note-59). I used Newton's , Machine's and Ramanujan's formula. (updated: line 21: Seq.take => Seq.truncate)

    4 people like this

    Posted: 13 years ago by nagat01

  • Convert the number of indentation spaces in a sourcecode.

    This small script converts continuous 4 spaces to 2 spaces by using Regex. It gets the source code from a clip board text and save it to clip board. Since this program doesn't parse the source code, conversion is not perfect. But writing script which interacts with clipboard is so easy, you can automate your trivial coding work with a small effort. Using F#interactive with Clipboard is my favorite way of meta-programming.

    3 people like this

    Posted: 13 years ago by nagat01

  • Building a WPF application in functional way

    I started to write pure F# + WPF application in about half a year ago. Today, I found a good way to compose WPF controls with dependent values. It's only writing a dependency object type as a class and give it to constructors of GUI controls. In this snippet "Volume","ColorVolume" and "ShapeContainer" has no properties. But works as a View which represents internal Model and allows users to change internal data. You only need calling a constructor of them. It means that you can compose GUI controls and it's functionality as a immutable data structure. (Update 2011/12/02 8:33:00(UTC+09:00) : Removed some user defined operators and renamed a type similar to DependencyObject in this snippet Reactor to SharedValue.) (Update 2011/12/02 9:04:01(UTC+09:00) : renamed some variables..)

    22 people like this

    Posted: 12 years ago by nagat01

  • Drag move for GUI controls

    This script opens a window with a red rectangle which is moved by dragging. I like writing interactive GUI without MVVM, FRP and Markup language.

    8 people like this

    Posted: 12 years ago by nagat01

  • TicTacToe(Joinads Example)

    TicTacToe game simulator implemented by using Joinads(http://tomasp.net/blog/joinads-async-prog.aspx). Game logic in this snippet was simplified so nicely by using Joinads. You can run this snippet on Try Joinads (http://tryjoinads.org/).

    4 people like this

    Posted: 12 years ago by nagat01

  • Get url opened by Google Chrome's main window

    This is a small example of invoking Win32 API. It gets the url which is opened by Google chrome's main window.

    3 people like this

    Posted: 11 years ago by nagat01

  • Toml parser

    Parser for Tom's Obvious, Minimal Language (https://github.com/mojombo/toml).

    5 people like this

    Posted: 11 years ago by nagat01

  • AsyncBuilder extension for maniplating other containers by using keyword

    AsyncBuilder extension for maniplating some other containers directory in asynchronous workflow. Bind methods in the extension enables you to retrieve inner values of 'a IObservable and 'a IEvent by using let! or do! keyword without Async.AwaitEvent or AsyncAwaitObservable. For method in the extension omits let! binding. Yield method in the extension enables you to yield value in for expression in asynchronous workflow.

    3 people like this

    Posted: 11 years ago by nagat01

  • KataBankOCR User Story 1

    User Story 1 at http://codingdojo.org/cgi-bin/wiki.pl?KataBankOCR 1. Define a function which retrieves text of a single digit with specified index in text of a number. 2. Make a sequence of texts of each digit of account number. 3. Find indices of text of 0 to 9 digit which satisfies structural equality to them.

    0 people like this

    Posted: 11 years ago by nagat01