PLNC 2010

Site pédagogique de l'unité d'enseignement INF355 (Paradigmes et Langages Non Classiques) de Télécom ParisTech.

Haskell : TD

Calculatrice RPN

Une calculatrice RPN travaille avec une pile. Les opérations (par exemple l’addition) travaillent avec les valeurs au sommet de la pile et les y remettent (comme en Factor).

Le but de cet exercice est de factoriser un maximum de code et de limiter la duplication.

Types de base

Le mot-clé « type » permet de déclarer [...]

Haskell : notes de cours 1 (23 juin 2010)

module Cours1 where
 
– Importation explicite du prélude en excluant certaines constructions :
– – Maybe et tous ses constructeurs
– – repeat
 
import Prelude hiding (Maybe(..), repeat)
 
– Équivalence entre opérateurs et fonctions. Par exemple, (+) est la
– fonction correspondant à l’addition et `f` ci-dessous est la version
– opérateur de la fonction f.
 
x `f` y [...]

Factor : TD 2

Aujourd’hui, nous allons nous intéresser au client IRC de Factor ainsi qu’à ses possibilités d’analyser des expressions selon une grammaire EBNF.

Client IRC

En s’inspirant de la documentation du client de chat IRC, créez un client qui :

se connecte sur le serveur « irc.freenode.net » et rejoins le channel « #inf355″ ;
récupère les messages envoyés sur le channel et puisse [...]

Factor : cours 2 (16 juin 2010)

pre.code {
border:1px dashed #ccc;
background-color:#f5f5f5;
padding:5px;
font-size:150%;
color:#000000;
}

.NULL {
color: #000000;
}
.COMMENT1 {
color: #cc0000;
}
.COMMENT2 {
color: #ff8400;
}
.COMMENT3 {
color: #6600cc;
}
.COMMENT4 {
color: #cc6600;
}
.DIGIT {
color: #ff0000;
}
.FUNCTION {
color: #9966ff;
}
.INVALID {
background: #ffffcc;
color: #ff0066;
}
.KEYWORD1 {
color: #006699;
font-weight: bold;
}
.KEYWORD2 {
color: #009966;
font-weight: bold;
}
.KEYWORD3 {
color: #0099ff;
font-weight: bold;
}
.KEYWORD4 {
color: #66ccff;
font-weight: bold;
}
.LABEL {
color: #02b902;
}
.LITERAL1 {
color: #ff00cc;
}
.LITERAL2 {
color: #cc00cc;
}
.LITERAL3 {
color: #9900cc;
}
.LITERAL4 {
color: #6600cc;
}
.MARKUP {
color: #0000ff;
}
.OPERATOR {
color: #000000;
font-weight: bold;
}

body, button {
font:9pt « Lucida Grande », « Lucida Sans [...]

Factor : TD 1

Préambule

Il est conseillé de faire l’échauffement avant d’attaquer les autres parties du TD. Vous avez ensuite le choix entre les tours de Hanoï (très simple) ou les engrammes (peu compliqué). Bien entendu, vous pouvez faire les deux si vous le souhaitez.

Échauffement

Définir la fonction « fact » calculant la factorielle d’un nombre. Cette fonction devra retourner 1 [...]

Factor : note de cours 1 (9 juin 2010)

pre.code {
border:1px dashed #ccc;
background-color:#f5f5f5;
padding:5px;
font-size:150%;
color:#000000;
}

.NULL {
color: #000000;
}
.COMMENT1 {
color: #cc0000;
}
.COMMENT2 {
color: #ff8400;
}
.COMMENT3 {
color: #6600cc;
}
.COMMENT4 {
color: #cc6600;
}
.DIGIT {
color: #ff0000;
}
.FUNCTION {
color: #9966ff;
}
.INVALID {
background: #ffffcc;
color: #ff0066;
}
.KEYWORD1 {
color: #006699;
font-weight: bold;
}
.KEYWORD2 {
color: #009966;
font-weight: bold;
}
.KEYWORD3 {
color: #0099ff;
font-weight: bold;
}
.KEYWORD4 {
color: #66ccff;
font-weight: bold;
}
.LABEL {
color: #02b902;
}
.LITERAL1 {
color: #ff00cc;
}
.LITERAL2 {
color: #cc00cc;
}
.LITERAL3 {
color: #9900cc;
}
.LITERAL4 {
color: #6600cc;
}
.MARKUP {
color: #0000ff;
}
.OPERATOR {
color: #000000;
font-weight: bold;
}

body, button {
font:9pt « Lucida Grande », « Lucida Sans [...]

Scala : notes de cours 2 (4 juin 2010)

package net.rfc1149.cours2
 
import scala.actors.{Actor,Futures,Scheduler,TIMEOUT}
import Futures._
 
// Demonstration of object unbuilding using unapply.
// This will be used for pattern matching.
 
object TripleOf {
 
def apply(n: Int): Int = 3 * n
 
def unapply(n: Int): Option[Int] =
if (n % 3 == 0) Some(n/3) else None
 
}
 
// Simple matching returning a boolean, no possibility of variable [...]

TD Scala 2

Dans la continuation du cours d’aujourd’hui, nous allons maintenant jouer avec les acteurs Scala et le pattern matching (à travers les « case class » ou « unapply ») pour coder le comportement des clients d’une auberge. Les différents personnages seront codés en utilisant des acteurs séparés. On pourra, à la fin, y rajouter un soupçon de XML.

Les personnages

Le [...]

Idées de projets

Voici quelques idées de projets pour cette année. N’hésitez pas à en proposer d’autres ou à adopter un projet (en postant un commentaire). Tous les langages non-mainstream et non-jouet sont envisageables.

Application pour Android en Scala

À l’instar de HarassMe, on développera une application pour Android en Scala. L’application devra, avec l’aide de sbt, utiliser les bibliothèques [...]

TD Scala 1

Dans ce TD, nous allons mettre en œuvre les concepts illustrés par Alexandre lors du cours de la semaine dernière. On pourra consulter la documentation en ligne de Scala, ainsi que le livre Programming Scala disponible également en ligne.
Pour faire le TD, vous aurez besoin d’installer sbt (simple build tool). Une fois ceci fait, récupérez [...]