Hoomla

“Symmetry is a complexity reducing concept […]; seek it everywhere.”

BitC - LISP-syntax under ML-semantik?

clock juli 28, 2008 10:15 by author kullbom

En gammal kollega sa en gång att hans dröm var ett språk som kombinerade LISP-syntax (S-expressions) med semantiken från ML och sedan dess har jag vuxit in i att till stor del dela den drömmen.

Sedan tidigare har jag känt till två “projekt” som relaterar till nämnda dröm: Qi och Sexplib för Camlp4.

Idag blev jag informerad om att Jonathan Shapiro, Swaroop Sridhar och Scott Doerrie från Johns Hopkins University håller på med The BitC Programming Language (Specification: HTML eller PDF) som delar nämnda egenskaper.

“It seeks to combine the flexibility, safety, and richness of Standard ML or Haskell with the low-level expressiveness of C.” (... och har syntax i form av s-expressions)
BitC är relaterat till The Coyotos Secure Operating System men kompilerar till vanlig C-kod. Vidare så skrivs det på BitC-sidan att “25 March 2008: Work begins on LLVM back end.” vilket ger mig ett ypperligt tillfälle att uppmärksamma just The LLVM Compiler Infrastructure Project (LLVM = Low Level Virtual Machine) och The High Level Virtual Machine (HLVM). (Jag passar på att länka till Parrot Virtual Machine när jag nu ändå är igång...)

Bli den första att värdera denna post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Visual Studio Lab

clock juli 28, 2008 00:05 by author kullbom

Hyperlänkad version av projektbeskrivningen får räcka:

Visual Studio Lab (VSLab) exploits the power of F# and its interactive top level to provide an interactive environment similar to MatLab and Mathematica, in which you can easily create Add-ins and interact dynamically with them inside Visual Studio. Moreover, since F# is a compiled language, the final code can be compiled as a standalone application. Goal of the project is to provide the basic infrastructure to turn Visual Studio in VSLab, and a number of addins (called viewlets) used to show data and support development of scientific based applications.

Lite svårbegriplig slutkläm (?) men man kan ju inte annat än bli glad…

Bli den första att värdera denna post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Mono, Cocoa och MacOSX

clock juli 27, 2008 18:04 by author kullbom

.Net under Mono blir sakta men säkert ett vettigt alternativ för oss som envisas med att vilja utveckla för MacOSX.

Efter att projektet ObjCSharp stått och stampat under en längre tid tog Laurent Etiemble tag i situationen och skapade Monobjc:

The Monobjc bridge provides the necessary tools to develop and run .NET applications (written in C#, VB.NET, etc.) that interact with Objective-C frameworks and libraries under Mac OS X. Existing Objective-C classes can be used in .NET code in an almost transparent manner.

(Utifrån Laurents exempel lyckades jag efter vissa justeringar av Monobjc kompilera en körbar test-applikation skriven i F#.)

Trots att Monobjc fortfarande verkar relativt okänt i mono-världen släpper sedan Julius Eckert en mindre men fullt användbar IDE för Monobjc kallad MonoMate. MonoMate är open source (C#) och koden hittar du här: http://code.google.com/p/monomate/

För den som lärt sig uppskatta .Net Reflector finns TypeRefleX som alternativ under MacOSX...

Bli den första att värdera denna post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Sommarläsning

clock juli 27, 2008 10:15 by author kullbom

Bli den första att värdera denna post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Monader i F#

clock juli 27, 2008 08:56 by author kullbom

I slutet av Brian McNamaras artikelserie om katamorfismer (del sju och åtta) formulerar han continuations som en monad med hjälp av F#’s “computation expressions”. Computation expressions är en sorts “monadsyntax” (i stil med Haskells) på något som i F# kallas för “builder objects” eller “monadic builders”.

Builder objects i sin tur kan möjligen förstås som en form av generaliserad “LINQ-provider”. Genom att implementera de fyra funktionerna/metoderna Delay, Bind, Let och Return kan ett builder object representera monadiska strukturer.

Typsignaturerna för en “monadic builder” (för en monadisk typ M):

type M-Builder with
    member Bind   : M<‘a> * (‘a -> M<‘b>) -> M<‘b>
    member Return : ‘a -> M<‘a>
    member Delay  : (unit -> M<‘a>) -> M<‘a>
    member Let    : ‘a * (‘a -> M<‘b>) -> M<‘b>

Några artiklar i ämnet:

Bli den första att värdera denna post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Catamorphisms

clock juli 24, 2008 11:06 by author kullbom
Kategoriteori ligger uppenbarligen till grund för mycket spännande inom programmering. Jag kan tyvärr i det närmaste ingenting i ämnet men har förstått att den inte bara är monader som härstammar därifrån.Den här gången är det begreppet katamorfism som fångat min uppmärksamhet.Som vi lisp-programmerare vet kan de flesta list-operationer formuleras i termer av reduce (i C# heter det Aggregate och i haskell foldr) och katamorfism är någon sorts ytterligare generalisering av detta.Erik Meijer har med ett par kollegor skrivit “Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire” som tar upp ämnet ur ett aningen teoretiskt programmeringsperspektiv och Brian McNamara har en artikelserie på sin blog Inside F#:Spännande läsning...

Bli den första att värdera denna post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Monader i bilder

clock juli 20, 2008 22:58 by author kullbom
Azad Bolour har skrivit en artikel om monader med ett lite speciellt angreppssätt: “Monads through Pictures”

Bli den första att värdera denna post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5


Liskov och annan spännande läsning

clock juli 20, 2008 17:11 by author kullbom

De flesta har hört talas om Barbara Liskovs “Liskov substitution principle” som en del av ett gäng “Agile Design Principles”. För den som vill sätta sig in i vad det handlar om är naturligtvis källan en bra början: “Behavioral Subtyping Using Invariants and Constraints”

För att inte tappa bort spännande texter som denna har jag börjat samla ihop länkar till olika “papers” här.

Edit: Denna diskussion i ämnet är lite kul

Bli den första att värdera denna post

  • Currently 0/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5