text:
Two Guys Arguing

Porting Haskell’s Parsec

Posted in clojure, haskell by youngnh on 11.11.10

Parsec is a parser-combinator library. Parser combinators are built around the idea of making a bunch of very small and focused parsers and combining them using operators that one would more usually see in regular expressions. Ultimately leading to parsers that feel more like function calls in a program that a stiff declaration of a grammar. Parsec is king in Haskell-land. In Clojure, however, there are a number of libraries fully- and not-so-fully written that can be used to write parsing programs. fnparse, Amotoen, clarsec, parser, clj-peg are just a few, feel free to mention your favorites in the comments. I don’t mean to leave any out, but rather point to out that what I’m doing here is not new. I do hope it’s illuminating for some.

Parsec, as I see it, boils down to 2 ideas.
A parser either consumes input or doesn’t. Consumed or Empty.
A parser either succeeds in parsing or it fails. Ok or Err.

These outcomes can be combined into 4 continuation functions that are passed to every parser:

  • cok – Consumed & Ok
  • cerr – Consumed & Err
  • eok – Empty & Ok
  • eerr – Empty & Err

As for errors, Parsec defines two types of them. Those that we can say something about, and those that we can say nothing about. These are errors with messages and unknown errors, respectively. Of the errors that we can say something about, some are the result of not finding input that the parser was expecting, which lead to messages like “expected ‘a’ and found ‘b'”, and some are the result of not finding input where we expected to, which lead to messages like “unexpected end of input”.

Finally, Parsec keeps tabs on the thing it’s parsing, it maintains state. The state is made up of 2 elements, the input stream itself, of which a Clojure seq models nicely and the current source position, itself made up of the name of the input, and one’s current line and column location in it.

The Most Basic Parsers

The simplest parser is the one that no matter what, returns a constant value. This is called parserReturn in Haskell, but in Clojure, it’s more akin to the constantly function, so I’ve named it always, and here’s it’s simplified implementation:

(defn always [x]
  (fn [state cok cerr eok eerr]
    (eok x state)))

This implementation makes sense. No matter what, it returns a new parser. A parser is merely a fn that takes a state and 4 continuations. The always parser always calls the Empty & Ok continuation. Nothing was removed from the stream (hence the Empty part), and everything should continue on as normal (the Ok part).

Equally simple is the parser that always fails. This is called parserZero in Haskell, since it represents a “nothing” parser.

(defn parser-zero []
  (fn [state cok cerr eok eerr]
    (eerr (unknown-error state))))

(defn unknown-error [{:keys [pos] :as state}]
  (ParseError. pos []))

More Interesting Parsers

One of the more basic parsers in Parsec is tokenPrim, which processes a single element from the underlying stream. It unconses the first element from the head of the input, tests if it is supposed to be consumed and then updates the state’s current position in the input. To do this, it takes 3 functions.

nextpos calculates a new source position based on the item consumed and the old position.
test takes a single element from the underlying stream and returns whether or not to consume it
showToken is used to create readable error messages by returning a string representation of stream elements

(defn token-prim [show-f nextpos-f consume?]
  (fn [{:keys [input pos] :as state} cok cerr eok eerr]
    (if-let [s (seq input)]
      (let [item (first s)
            rest-of-input (next s)]
        (if (consume? item)
          (let [newpos (nextpos-f pos item rest-of-input)
                newstate (InputState. rest-of-input newpos)]
            (cok item newstate))
          (eerr (unexpect-error (show-f item) pos))))
      (eerr (unexpect-error "" pos)))))

There are three ways the above function continues. Two are through eerr, one when there is nothing left in the seq when we were expecting to parse something, and one when we did parse something, but our test told us not to consume it. In the second case we can produce a decently readable description of the item so that we can later present it to the user. Finally, if our test tells us to go ahead and consume the item, we call cok passing it the item and a newly calculated state with a new position and the input without our consumed item on the front.

There’s a lot of parsers we can implement on top of token-prim, however, it’s got no brain. You can only line up a number of token parsers one after another and let them tell you if the input matched in the order you thought it would. We can’t express the idea of “or” with it. For that, Parsec relies on the parserPlus parser. It’s called “plus” because it’s used to glue multiple parsers into a single one, analagous to how addition of numbers glues them all together into a new, single number (I never used to think about things like this. Haskell has made me re-understand everything I already knew).

The strategy for implementing parserPlus is that it will take 2 parsers and try the first one. If that succeeds, we’ll go with that. If it doesn’t, we try the second one, and if it succeeds we want our combined parser to be indistinguishable from that second parser. If neither work, then our parser didn’t work and we want to escape like any other parser would if it failed. Calling the first parser is easy. For the sake of staying close to the original Haskell, we’ll call this parser m. Parsers in Haskell and Clojure are simply functions, so in order to try it, we can invoke it and pass the current state and the 4 continuations it expects.

The continuations are our hook to intercept failures. We know that if m fails, it will call the fourth continuation we pass it. So to try the second parser, n second we’re going to wrap the eerr function (the 4th continuation) by trying that second parser before giving up and calling eerr. Here’s how it looks in Clojure:

(defn parser-plus [m n]
  (fn [state cok cerr eok eerr]
    (letfn [(meerr [err]
               (letfn [(neok [item state-prime]
                          (eok item state-prime))
                        (neerr [err-prime]
                          (eerr (merge-error err err-prime)))]
                 (n state cok cerr neok neerr)))]
      (m state cok cerr eok meerr))))

The loacally nested functions aren’t exactly readable at a glance, but combined with the knowledge of what’s happening it’s a really elegant way to express the idea. Also, as a small note, there aren’t great names for some of the nested function parameters. state-prime and err-prime? Well, that’s a holdover from Haskell to express that the thing is an altered version of the thing it came from. In mathematics, this is expressed as a tick, state' and err'. Those aren’t legal Clojure 1.2 identifiers, so I opted to be verbose. Starting with the Clojure 1.3 alphas available now, tick is a legal constituent character, which means you can use it anywhere in an identifier except as the first character.

The last parser I’d like to tackle in this blog post is manyAccum. This parser wraps behavior around an existing parser and so becomes a tangle of continuation functions just like parser-plus was, but unlike parser-plus, manyAccum only accepts one parser and attempts to apply it 0 or more times. This is the Parser equivalent of the Kleene operator.

Just like parser-plus, we’re going to invoke the parser manyAccum is given and create a new parser by manipulating the continuations we pass to it. Specifically, if the parser we’re given fails to consume any input (calls eerr), we’re going to hijack that and report that it was instead an eok with an empty list. If the parser succeeds in consuming input, we’re going to try to get it to do it again. And again. And again forever. Here’s what it looks like:

(defn many-accum [p]
  (fn [state cok cerr cok eerr]
    (letfn [(many-err [err] (throw (RuntimeException. "combinator '*' is applied to a parser that accepts an empty string")))
             (continue [coll item state-prime]
               (p state-prime (partial continue (cons item coll)) cerr many-err (fn [_] (cok (cons item coll) state-prime))))]
      (p state (partial continue (seq [])) cerr many-err (fn [_] (eok [] state))))))

We define many-err to immediately quit with an exception if the third continuation, eok, is called since that means that p accepts empty strings and would spin forever if we let it. The only other trick to many-accum is that we create continue to accumulate items by first calling it with an empty seq, (seq []) and then consing further consumed items onto the front. Haskell’s many-accum takes a cons-like operator in addition to p as a more flexible way of creating a list of elements.

A final Note

I intentionally stayed away from Monads in this post (which is no easy task when porting Haskell), averting my eyes from Konrad Hinsen’s clojure.contrib.monad and trying wherever possible to make Clojure functions feel less like Haskell functions obsessed with parentheses. Not because Monads are particularly special or complex, but rather just the opposite. Monads fall out of designs that favor composability and uniformity. The first parser of this post, always, is half of an implementation of Monad. parser-zero and parser-plus are 100% of an smaller class of monads called MonadPlus. Reading clj-http’s source, I felt like it was such clean and idiomatic Clojure, with fantastic composablity properties that made it easy to build on top of, but also like it would be very easy to expess in Haskell and not feel forced or awkward. So it’ll be interesting to finish this port and see if I can succeed in doing the same in the opposite direction.

Tagged with:

4 Responses

Subscribe to comments with RSS.

  1. […] Porting Haskell’s Parsec « Two Guys Arguing (tags: clojure parsing haskell continuations) […]

  2. Steven Obua said, on 05.17.12 at 11:30 pm

    It seem to me that by introducing continuations you reintroduce the space leaks that the original Parsec implementation tries to avoid so hard.

    • youngnh said, on 05.18.12 at 10:13 am

      My implementation does currently leak stack, I’ll grant you that. Pile enough combinators together and eventually you’ll get a StackOverflowException. Others have noticed that and there is working ongoing to fix the situation, but were you referring to leaking memory by using continuations?

  3. panad said, on 07.16.12 at 4:57 pm

    Parse-EZ provides similar (and more) functionality and is a straight forward implementation (no monads, etc.), but is not functionally “pure”.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s


Content-Type: application/http; msgtype=response

WARC-Identified-Payload-Type: text/html

WARC-Truncated: length

WARC-Type: response

text:
Channel 4’s Sunday Brunch features history and fashion in type with Sarah Hyndman

Channel 4’s Sunday Brunch features history and fashion in type with Sarah Hyndman

Sarah Hyndman interviewed on Sunday Brunch on April 9th 2017, this is available here on catchup TV in the UK (the interview starts at around 01:10). This is an overview of the conversation that covered 550 years of type in eight and a half minutes, with a few supporting facts added in.

The production team and graphics department at Princess Productions sourced and created most of the examples, we all had a lot of fun because they were excited about the segment. Presenter Simon is also a very big type fan and had his copy of the book stashed in his bag to take home with him.

Tim: Welcome back to Sunday Brunch live. We’re here with graphic designer and author Sarah Hyndman. You’re going to teach us a little about the history of typography, what is it first of all?

Typography is written language made from preformed letters that can be repeated over and over. During the centuries many shapes and styles of the letters have been designed, all of which have absorbed their own set of associations or meanings. We might think that we don’t notice these meanings, but we do because reading is a complex task performed by our non-conscious (like driving or walking), and as a result the type communicates directly with our non-conscious brain.

Looking at type in context is like code breaking. The shapes and styles appear in all aspects of our everyday lives and form a mirror for social history and cultural change. Looking at the typefaces gives you many clues about historical context, origins and genres.

Simon: I like the word typeface better than font, what’s the difference?

A typeface is the design, like Helvetica. A font is the physical form of a typeface—this could be the metal type we print with, or the digital file on your computer. However, the terms are used fairly interchangeably outside the professional world of graphic design and typography.

Tim: You’re now going to take us through the history of a few well-known fonts. First we’re going to look at this gothic font, when was this first used?

Printing first came to Europe in the 1400s and at the time, like many new technologies, it copied the format of the existing technology—in this case hand-written books. Books were huge and prestigious artefacts, carefully hand written by monks and scribes in ornate and calligraphy style that we know as gothic or Blackletter.

Simon: You wouldn’t expect to read a book in this style today?

No, today we would consider this a display type style and would find this too ornate and difficult to read in the body of a book. However this was the style everybody was familiar with at the time, so they found it easier to read and you could almost consider it to be the equivalent of the Helvetica of its day.

These ornate letterforms were recreated as metal type, each letter created as a separate printing block that would then be arranged one by one to create the page so that it could be printed. These were set in reverse so that they would print in positive, so it was easy to confuse some letters that are mirror-versions of each other such as ‘p’ and ‘q’. This is where the phrase “mind your ‘p’s and ‘q’s” comes from.

Tim: And it was used in quite an important book wasn’t it?

The first major printed book was the Gutenberg Bible, printed in Germany in the 1450s. The type style’s links to scripts written by monks and the first printed Bible have given it spiritual associations of wisdom.

Tim: How did the use of the gothic font change over the years?

These type styles were popular throughout Europe as the printing press, and the metal type, travelled. However it was difficult to create these incredibly ornate letters and to print them on the coarse-textured paper of the day so they were gradually replaced by much simpler styles inspired by Roman carvings. However they remained popular in Germany until the start of the 20th century, this was when attitudes in Europe changed from valuing the traditions of the past to embracing technology and the machine age of the future. This can be seen in the new, minimalist and often geometric type styles that became popular. It was re-adopted briefly in Germany during World War II when there was a return to nationalism and traditional values, but this was short lived.

Tim: The font is still in use today, isn’t it?

Typefaces are like sponges, they absorb meanings from the context we see them used in, and we can then find clues in this visual code. Yes these styles can still be seen all around us today, for example the associations with Germany can still be seen on beer labels. German brewers travelled around the world in the 1800s and they took with them their styles of beer. The San Miguel and Corona are both Pilsner style lagers, this is a style that originates in Germany and is associated with old world lager quality—this is reflected in the type styles appearing on the labels. The Leffe is not pilsner-style beer, but it was originally brewed in monasteries by monks so in this instance the type style is likely referencing the meticulous and calligraphic handwriting of the monks.

“German brewers went around the world during unrest over German unification so took German styles of beer with them. Their teutonic style remains a signifier of old world lager quality.” Beer writer Pete Brown

Simon: We were talking earlier about the difference it would make if it used a typeface like Comic Sans on the label instead, do you think that would change what you think about the beer?

Yes, firstly it would be aimed at a different and rather under-aged demographic. I think it would also suggest the beer would taste different—you wouldn’t be expecting so much of a fizzy pilsner-style beer and instead might expect it to be sweeter and more like pop.

Tim: What else do we associate this font with today?

If I see it on a record I think of heavy metal music for which it’s spiky, aggressive shapes and negative associations mirror the sound of the music well (Tim mentions Motorhead). However when I show it to younger members of the production team they associate it with hip hop music. One of the reasons for this may be that it’s referencing the bling lifestyle of the rap artists by using type styles seen on old dollar bills.

Tim: Next we’re talking about Slab Serifs, when did these come about?

These styles of typefaces appeared in Victorian London after the Industrial Revolution. For the first time manufacturers were able to produce their goods in excess of demand, thanks to mechanisation. This led to the creation of the advertising industry as now products needed to be advertised to be sold. It was discovered very quickly that the delicate little typefaces used in books just weren’t big and bold enough for adverts and posters that needed to be noticed in a noisy and chaotic visual environment. In the 1800s typefaces like Clarendon were designed that had big, blocky serifs (these are the ‘feet’ on the letters) that were bold, robust and could be seen from a great distance.

The tray of beautiful wooden Slab Serif type is Case No. 7, kindly lent to us by letterpress artists Julieta and David from Pixel Press.

Tim: What is the association with Slab Serifs and the Wild West?

This was an era when the English were exporting their goods to the colonies, especially those in the New World, and these goods included typefaces and printing blocks. Travelling printers went from town to town in America, with the printing blocks bouncing around in the back of the wagon because it was long before roads, and only the most sturdy and robust typefaces survived. They printed everything each town would need, and Hollywood would suggest that one of the main things a town would require would be wanted posters. This is now a visual code that has been repeated in the movies so many times that we now associate it with Wester movies, and Country and Western music, even though these styles originated in Victorian London.

Simon points out that he doesn’t like it when a capital J falls below the baseline. This is a topic for another conversation.

Tim: Finally, we have Cooper Black…

This typeface is having its moment in the spotlight as it’s currently all the rage on fashion blogs and in high street fashion shops. It was originally designed in the 1920s and, unlike the angular and blocky Slab Serif style, it’s shape is curvaceous and looks like bubblegum bubbles.

Tim: Why was it big in the 70s?

Typefaces often reflect the aesthetics or fashions of an era, and I think Cooper Black mirrors the silhouette of the 70s: platform boots, flares, billowing smock shirts.

It was also the style of lettering you would use if you wanted to get customised t-shirts made up because Cooper Black was available as iron-on velour letters (it felt a little like the flock wallpaper in the local restaurant). You often find that typeface fashions follow developments in printing technology, and being the go-to font for D.I.Y. t-shirt printing meant that it became incredibly popular in the 70s from Summer holiday t-shirts to breakdance crews using the iron-on letters to create their uniforms.

Tim: It’s back in vogue now?

Once it became oversaturated it fell out of fashion, until it began to appear again in fashion blogs and on Instagram today. It has now become short-hand for 1970s style, which is popular again now. Cooper Black is like a typographic Instagram filter for the 1970s.

Tim: What will the next big trend in fonts be?

It’s hard to predict as these pop up anywhere and become social trends, it could be an artist using a typeface on a record cover or a TV series. We’ve recently seen a return to the 1980s with series like Stranger Things and Lethal Weapon using classic 80s style typefaces. The 1990s are on their way with series like Twin Peaks, so maybe the next big thing typographically will be to move towards the shoulder pads and pencil skirts/trousers silhouette of the 90s and for typefaces to be bold and angular at the top, tapering down to a point.

Tim: Thanks Sarah. Sarah’s book ‘How to Draw Type and Influence People’ is out next week.

How to Draw Type and Influence People: An Activity Book by Sarah Hyndman

Just my type: how Cooper Black became 2017’s most fashionable font

Vetements, Brioni and Kanye Agree: It’s Gothic Time

sunday brunch logo
Type Tasting games and Why Fonts Matter
Sunday 7th February 2016
Read more…

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

warcinfo:
robots: classic
hostname: ip-10-158-191-93.ec2.internal
software: Nutch 1.6 (CC)
isPartOf: CC-MAIN-2017-51
operator: Common Crawl Admin
description: Wide crawl of the web for December 2017
publisher: Common Crawl
format: WARC File Format 1.0
conformsTo: http://bibnum.bnf.fr/WARC/WARC_ISO_28500_version1_latestdraft.pdf


text:
Site Search: The Ultimate Mashup

July 24, 2007

So you’ve achieved 100% indexation of your site in all the main search engines. Great.

Now it’s time to recycle that content a bit to boost further the number of page. Yes, I’m talking about the same content, mashed up in creative ways. You can most likely create loads of category pages by segmenting your product catalogues (creating what’s called views); you can split content large pages and create subpages (especially if your pages are long, or if you use tab navigation within them). You can use the current tag cloud hysteria to organize your content by user-defined (or SEO-defined) criteria. And, you can create literally hundred of content pages by allowing SE bots to index the pages with site search results. Just how to go about it?

1. Optimize the onpage content of your site search results: review the title, metas, content. It must be relevant, it must convert (check out those bounce rates in GoogleAnalytics or whatever other web statistics program you use!).

2. Optimize the cross-linking  of your site search result pages (SSRP). Check out amazon: their “user who bought this also bought that” concept can be easily applied to SSRP (users who search for this also searched for that). If you don’t have user data, define the relation between search queries yourself, using some simple similarity algorithm. What queries you ask? There are at least three easily accessible sources: site search query logs(if you don’t have them, talk to your sysadmin or the person who programmed the site search) web server logs of queries people use in public SE to reach your site (again, your sysadmin will help), and other sources (such as the infamous AOL data leak etc.)

3. Optimize the linking of the new SSRP and your other landing pages. There are twofold benefits of extensive SSRP indexing. Additional direct traffic, and additional linking created to your regular landing pages (because the principal content element of your SSRP are links to your regular landing pages, right?) I dare to say that in 90% of cases of site search mashup I’ve analyzed the linking effect exceeds the direct traffic effect.

I would love to hear from people who’ve tried this recipe; drop me a comment/email if you are willing to share (in a strictly confidential manner) your results.

Disorganized Google

February 27, 2007

Funny. No matter how hard google tries to fulfill its mission to organize world’s information, there will always be people who use it to increase chaos and entropy. This guy created a google personalized homepage more than 8.000 pixels long…

Balancing your links – Be Natural

November 9, 2006

Un tal Steven Bradley wrote recently an interesting post about balancing your links. The adage is that you should make them look “natural” and avoid over-optimization.

There is nothing wrong with this advice, if your site is purely designed for Googlebot, Slurp or msnbot.

If your site is designed for real users, and your goal is to sell them something (be it a product, service, or subscription) or to give them something useful (such as valuable posts and articles or some useful utility, plugin or extension), let me give you another advice.

Instead of SEOing your site and worrying about making it look natural, be natural. By that I mean that every link you put on your site should be of value for your users.

There is nothing wrong with Steven’s advice, because by trying to look natural you will probably achieve linking structure that will benefit your users. However, I strongly believe that by being natural and focusing on your user’s needs you can achieve superior results, both in usability of your site and in long-term SEO. It pays well to be authentic and natural. You can stop worrying about ongoing changes in ranking algorithms and focus on building a useful site. SE bots learn and get better every month in distinguishing value from manipulation. Being natural (instead of looking natural) is the safest long-term SEO strategy.

Let me give you a natural alternative to Steven’s advice.

  • Steven: Mix up links to your home page and to deeper pages of your site
  • Ubibene: Try to predict / anticipate user’s informational needs on every page and provide links to satisfy them
  • Steven: Vary the anchor text in links to your pages
  • Ubibene: Put the anchor text in links that best explain the content of the target page. Avoid misleading the user. Different context to different (but related) anchor texts.
  • Steven: Trade a few links to balance out the one way inbound links
  • Ubibene: Mix outlinks and internal links always having in mind the user and his/her needs. There is nothing wrong with NOT having any outlink if the user does not really need them on some page. There is nothing wrong with having ONLY outlinks if it benefits the user.
  • Steven and Ubibene: Link out as well as linking in. Here we completely agree, however, I suspect the motivation is different (Steven focuses on naturally-looking linking structure, ubibene on linking structure that best satisfies user needs).
  • Get site wide and one off links (this one I don’t really get, my English is not that good.)

Google Adwords Website Optimizer

October 25, 2006

This is probably the most important SEO news this month. It allows a simple way to improve SEO payout by improving the conversion rate of landing pages.

 While in itself it does not generate more traffic, it helps to improve user experience and increases the “goals” (such as sales, bookings, subscriptions etc.)

It has an important side effect on quite a lot of services/companies with similar usability improvement goals. So, expect something similar to “analytics earthquake” and “maps earthquake” once tool is released (free of charge) to all interested webmasters.

 Google adwords website optimizer is (at the moment) in invitation-only beta, but if I had a usability services company, I would be worried. Very worried…

Google playing catch-up game

October 25, 2006

Google has finally decided to match the offer of msn search to offer its user to create its own search engines, using subsets of its huge index.

Under the umbrella of Google Co-op, users can create specialized index(es) defining several hundred thousand(!) websites they want to include.

Why this news is interested from SEO point of view? Because it moves gives SEOs the possibility to leverage the traffic from well positioned keywords, with the traffic from well positioned specialized search sites (using index that conveniently leaves out sites that the SEO is not able to beat in the regular index, or that are spammy and useless for the site’s target audience.


text:
French diplomacy fully behind the Paris 2024 bid

Paris is a candidate city to host the 2024 Olympic and Paralympic Games. The French Ministry of Foreign Affairs and International Development (MAEDI), a founding member of the Paris 2024 public interest group, is working with the entire French diplomatic network abroad to support the bid.

A unifying bid

The Paris bid has unified the city, enjoying strong public support. It has the support of all French sportspeople and 77% of the French public (TNS Sofres poll, October 2016). As well as the general public, all levels of government and political actors, the business world, associations and many NGOs are committed to the project.
On 8 February, the Ministry will receive the Paris 2024 bid committee for a presentation of the Paris 2024 Olympic and Paralympic bid for the Ambassadors of countries represented in France.

France: an attractive destination for major sporting events

France has recently demonstrated its ability to host major sporting events, while ensuring that they remain focused on the fans in a safe and festive atmosphere, despite the difficult international context.
Recent major events held in France, both sporting and others, have displayed France’s knowledge and expertise in this area, like the COP21, UEFA Euro 2016 and the World Men’s Handball Championship. At Euro 2016, over 1.2 million people in Paris and over 4 million throughout France enjoyed the fanzones in complete safety.

With their unique heritage and expertise in hospitality, Paris and France are the world’s leading tourist destinations. Should the Paris bid win, the entire city would become a genuine Olympic Park, with many of the events in iconic locations like the Eiffel Tower, Les Invalides, the Champs-Élysées and the Château de Versailles, to mark the centenary of the 1924 Paris Olympics.

Values shared by French diplomacy

The Paris 2024 bid is solid and responsible, with the strong values of humanism, inclusion and togetherness - values which France wants to share internationally. This desire can be seen in several innovative aspects of the bid:

  • A unique celebration of the Games and the Olympic spirit, in the heart of Paris with its most spectacular monuments.
  • A vision which draws on the values of sport and the Olympic spirit to build a more inclusive and united society, both in France and beyond, including via the central role given to the Paralympic Games in this project.
  • These would be the first Games to be in line with the historic Paris Climate Agreements. This is an essential issue for Paris 2024. The Paris Games will have a carbon footprint 55% lower than the London 2012 and Rio 2016 Games.
  • Infrastructure investment (not linked to the Games) exclusively focusing on the needs of territories and on serving populations (accommodation, local sports facilities, footbridge). With 95% of the facilities already built or just temporary, Paris 2024 will only need to build two types of facilities: the athletes’ and media villages and the aquatic centre, thus ensuring a responsible and controlled budget.
  • A strong legacy for the people of Paris after the Games. The village will be converted into a new, mixed eco-neighbourhood with schools, shops and a variety of accommodation.

Dernière modification : 09/02/2017

top of the page


WARC-Identified-Payload-Type: application/xhtml+xml

text:
Hotels in Athurugiriya

Search for Athurugiriya Hotels™ Rewards

Collect 10 nights, get 1 reward night

And look out for Secret Prices on selected hotels

  • Pay now or later on most rooms
  • Free cancellation on most rooms
  • Price Guarantee

Best Athurugiriya Hotels

Athurugiriya overview

A stop at places like Diyatha Uyana and Kanduboda Meditation Centre will create some memories. Whatever you're into, Athurugiriya has something for you.

Where to stay in Athurugiriya

Whether you're planning to stay for a night or for the week, the area around Athurugiriya has accommodations to fit every need. Search for hotels in Athurugiriya with by checking our online maps. These display the areas and neighbourhoods around all Athurugiriya hotels so you can see how close you are from landmarks and attractions, and then refine your search within the larger area. The best Athurugiriya hotel deals are here with our lowest price guarantee.

How to get to Athurugiriya

Fly in to Colombo (CMB-Bandaranaike Intl.), 21.6 mi (34.8 km) from central Athurugiriya.

What to see around Athurugiriya

Some recommended attractions include:
  • • Diyatha Uyana
  • • Kanduboda Meditation Centre
  • • Kelaniya Raja Maha Vihara
  • • Royal Colombo Golf Club
  • • Sri Lanka Airforce Museum

When to visit Athurugiriya

Wondering which time of year to travel or what clothes to pack? Here are seasonal trends to help you with your planning:

Seasonal temperatures
  • January-March: 32°C day, 22°C night
  • April-June: 32°C day, 24°C night
  • July-September: 30°C day, 24°C night
  • October-December: 31°C day, 23°C night
Seasonal average rainfall
  • January-March: 10 cm
  • April-June: 30 cm
  • July-September: 18 cm
  • October-December: 35 cm


text:
Hotels in Mons

Search for Mons Hotels™ Rewards

Collect 10 nights, get 1 reward night

And look out for Secret Prices on selected hotels

  • Pay now or later on most rooms
  • Free cancellation on most rooms
  • Price Guarantee

Best Mons Hotels currently has 1 hotels in Mons!

Our 5 most booked Mons hotels from the last hour are:

1. Samara Rain Forest Retreat & Spa
2. &TravellersChoice2
3. &TravellersChoice3
4. &TravellersChoice4
5. &TravellersChoice5

But, low prices and a great selection are not the only thing offers. We also have 0 genuine guest reviews for Mons.

Why use to book your Mons accommodation?

We can help you to find the perfect Mons hotel room for almost any occasion. With our fast and secure hotel search you may compare different Mons hotels by:

  • - Price
  • - Availability
  • - Mons neighbourhoods
  • - Nearby Mons attractions and landmarks
  • - 0 genuine guest reviews for Mons
  • - Star rating
  • - Amenities
  • - Hotel name & chain
  • - Theme

Alternatively, you can use our detailed Mons maps showing hotel locations in Mons, using all the filters listed above.

Cheap Mons hotels - getting the best deal

On you can always be sure you're getting the best deal.

We make it easy to save money on every booking. We offer our Price Guarantee on most bookings. Plus we offer 3 more ways to save:

1. Rewards - Collect 10 nights, get 1 free*
2. Deals - Search over 10,000 deals!
3. voucher codes - All our official promo and discount codes in one place.


text:
Hotels in Berriwerri

Search for Berriwerri Hotels

Get Secret Prices on selected hotels

These prices aren’t available to everyone.

  • Pay now or later on most rooms
  • Free cancellation on most rooms
  • Price Guarantee

Best Berriwerri Hotels currently has 0 hotels in Berriwerri!

Our 5 most booked Berriwerri hotels from the last hour are:

1. &TravellersChoice1
2. &TravellersChoice2
3. &TravellersChoice3
4. &TravellersChoice4
5. &TravellersChoice5

But, low prices and a great selection are not the only thing offers. We also have 0 genuine guest reviews for Berriwerri.

Why use to book your Berriwerri accommodation?

We can help you to find the perfect Berriwerri hotel room for almost any occasion. With our fast and secure hotel search you may compare different Berriwerri hotels by:

  • - Price
  • - Availability
  • - Berriwerri neighbourhoods
  • - Nearby Berriwerri attractions and landmarks
  • - 0 genuine guest reviews for Berriwerri
  • - Star rating
  • - Amenities
  • - Hotel name & chain
  • - Theme

Alternatively, you can use our detailed Berriwerri maps showing hotel locations in Berriwerri, using all the filters listed above.

Cheap Berriwerri hotels - getting the best deal

On you can always be sure you're getting the best deal.

We make it easy to save money on every booking. We offer our Price Guarantee on most bookings. Plus we offer 3 more ways to save:

1. Rewards - Collect 10 nights, get 1 free*
2. Deals - Search over 10,000 deals!
3. voucher codes - All our official promo and discount codes in one place.


text:
Hotels in Long Flat

Search for Long Flat Hotels™ Rewards

Collect 10 nights, get 1 reward night

And look out for Secret Prices on selected hotels

  • Pay now or later on most rooms
  • Free cancellation on most rooms
  • Price Guarantee

Best Long Flat Hotels currently has 8 hotels in Long Flat!

Our 5 most booked Long Flat hotels from the last hour are:

1. Oval Motel
3. Adelaide Road Motor Lodge
4. Murray Bridge Motor Inn
5. Bridgeport Hotel

But, low prices and a great selection are not the only thing offers. We also have 152 genuine guest reviews for Long Flat.

Why use to book your Long Flat accommodation?

We can help you to find the perfect Long Flat hotel room for almost any occasion. With our fast and secure hotel search you may compare different Long Flat hotels by:

  • - Price
  • - Availability
  • - Long Flat neighbourhoods
  • - Nearby Long Flat attractions and landmarks
  • - 152 genuine guest reviews for Long Flat
  • - Star rating
  • - Amenities
  • - Hotel name & chain
  • - Theme

Alternatively, you can use our detailed Long Flat maps showing hotel locations in Long Flat, using all the filters listed above.

Cheap Long Flat hotels - getting the best deal

On you can always be sure you're getting the best deal.

We make it easy to save money on every booking. We offer our Price Guarantee on most bookings. Plus we offer 3 more ways to save:

1. Rewards - Collect 10 nights, get 1 free*
2. Deals - Search over 10,000 deals!
3. voucher codes - All our official promo and discount codes in one place.


text:
Reuters logo
Tennis-Sousa seals first ATP win for Portugal
September 29, 2013 / 11:44 AM / 4 years ago

Tennis-Sousa seals first ATP win for Portugal

Sept 29 (Reuters) - Unheralded Joao Sousa completed a fairytale run at the Malaysian Open on Sunday when he beat France’s Julien Benneteau 2-6 7-5 6-4 in the final to become the first Portuguese to win an ATP Tour title.

The 24-year-old, ranked 77th in the world, fell flat on his back in delight after claiming victory on the indoor hard court when Benneteau missed with a backhand down the line on his second matchpoint.

Sousa beat top seed and world number four David Ferrer in the last eight and then fourth seed Juergen Melzer of Austria in the semi-finals to reach his first final at the $875,500-event in Kuala Lumpur.

Dressed in black with his cap back to front, the young Portuguese right-hander struggled with his serve in the opening set as the experienced Benneteau broke twice to wrap it up 6-2.

The duo were on serve in the second before Sousa was forced to save a matchpoint at 5-4 down before holding and then snatching the crucial break to take the set 7-5 and force a decider.

The young Portuguese broke again in Benneteau’s opening service game of the third set and he held firm, saving four break points to close out the set 6-4 and claim the breakthrough win.

The loss was tough on fifth seed Benneteau who was searching for his first ATP Tour title in his ninth final. (Writing by Patrick Johnston in Singapore; Editing by Clare Fallon)

Our Standards:The Thomson Reuters Trust Principles.
0 : 0
  • narrow-browser-and-phone
  • medium-browser-and-portrait-tablet
  • landscape-tablet
  • medium-wide-browser
  • wide-browser-and-larger
  • medium-browser-and-landscape-tablet
  • medium-wide-browser-and-larger
  • above-phone
  • portrait-tablet-and-above
  • above-portrait-tablet
  • landscape-tablet-and-above
  • landscape-tablet-and-medium-wide-browser
  • portrait-tablet-and-below
  • landscape-tablet-and-below


text:
Bakery Assistant Jobs in UK : 10 job openings

Ambassador of our brand, and directly report to the Store Manager, your main missions will be the following: - Welcoming, sales and loyalty to our ...
About The Job Shift pattern Days From time To time Sun 05:30:00 11:30:00 Sat 05:30:00 11:30:00 ...
John Parker & Son Ltd
Canterbury, GB
Shop Assistant £18,000 - £20,000 (depending on experience) ParkerSteel is one of the largest steel distributors and processors in the United ...
The Smartlist
Chichester, England
CHICHESTER CARAVANSRequire aFULL TIME RETAILSHOP ASSISTANTWe are looking for a highly motivated & confident person.Retail experience would be beneficial, but ...
£17550 - £18720/annum
Faith Recruitment
Weybridge, Surrey
Shop Assistant Addlestone £17,550 - £18,720 per annum Are you customer focused and seeking a career within a friendly, ...
We are looking for a dynamic person with a love for coffee and great customer service skills to join our team in Dolce within total fitness gym in Prenton . ...
West Berkshire
About The Job Shift pattern Days From time To time Sun 10:00:00 19:00:00 Wed 17:00:00 22:00:00 ...
Cancer Research UK
Horsham, GB
Salary: £7.50 per hour + excellent benefits Hours: 7.5 hours on Tuesdays Contract Type: 6 months fixed term contract Closing Date: 19th ...
Baltic Recruitment Services Ltd
Washington, Tyne and Wear
Baltic Recruitment Services are recruiting for Production Operatives to work for our client based in Washington. Are you interested in working for ...
Campbell's of Beauly
Beauly IV
Campbells of Beauly is a country tailor and outfitter with a busy retail shop on the High Street of Beauly. Specialising in tweed jackets, knitwear, ...