
Picat 1.0 has been released - callmekit
http://picat-lang.org/download.html
======
emmanueloga_
These slides [1] do a better job than the website explaining what Picat is.

One of the slides explains the main features of the language:

* Pattern-matching: Predicates and functions are defined with pattern-matching rules

* Intuitive: Assignments, loops, list comprehensions

* Constraints: CP, SAT and LP/MIP

* Actors: Action rules, event-driven programming, actor-based concurrency

* Tabling: Memoization, dynamic programming, planning, model-checking

Now you know why it is called picat...

I think this website could make a better job on "selling" Picat to potential
users. Some suggestions for the author of the site, in case he reads HN:

* Do not put the sources behind a wall (Google Form), that only decreases the chance someone will try your language.

* Let people know how you license the project more visibly [2], may be in the footer of your site.

* Use syntax highlighting to improve the readability of the code examples.

* If possible, get a designer to help you with the aesthetics. If the source of Picat's site was hosted somewhere it would make it easier to fix it by a volunteer.

1: [http://picat-lang.org/download/picat_tutorial.pdf](http://picat-
lang.org/download/picat_tutorial.pdf)

2: [http://mozilla.org/MPL/2.0/](http://mozilla.org/MPL/2.0/)

~~~
kaeluka
slide #3: "Too close to Haskell".

------
callmekit
_From the announcement on the Picat mailing list:_

We are pleased to announce the release of Picat version 1.0.

Picat ([http://picat-lang.org](http://picat-lang.org)) is a new programming
language that integrates logic programming, functional programming, dynamic
programming with tabling, constraint programming, and scripting. Picat
incorporates many language features for better productivity of software
development, including pattern-matching rules, explicit non-determinism,
explicit unification, functions, constraints, and tabling. It is not rare to
find problems for which Picat requires an order of magnitude fewer lines of
code than many other languages.

Since the first release in Februrary 2014, Picat has been growing steadily,
and many users have had very positive experiences with the language: Hakan
Kjellerstrand's Picat page
([http://www.hakank.org/picat](http://www.hakank.org/picat)) has about 775
programs written by Hakan; the page [http://picat-
lang.org/projects.html](http://picat-lang.org/projects.html) has a collection
of over one hundred programs for a variety of projects and competitions; as
part of the VK Cup, the site [http://codeforces.com](http://codeforces.com)
featured Picat in a surprise round of a competition, and more than 500 teams
competed.

Picat's tabled planner has been shown to be an efficient tool for modeling and
solving planning problems. Roman Bartak, Agostino Dovier, and Neng-Fa Zhou
have hand-coded several models in Picat for the IPC competition problems
([http://picat-lang.org/ipc14](http://picat-lang.org/ipc14)). These
declarative models exploit Picat's features by using structural state
representations and common-sense domain knowledge. These Picat models
significantly outperform PDDL encodings run by the best PDDL planners. Sergii
Dymchenko has also demonstrated the promise of Picat's planner through several
AI planning problems, including problems from the Google Code Jam competition
([http://sdymchenko.com/blog/2015/01/31/ai-planning-
picat](http://sdymchenko.com/blog/2015/01/31/ai-planning-picat)).

One of the major additions made since version 0.1 is an optimizing SAT
compiler, which translates high-level constraints into efficient CNF codes to
be solved by a SAT solver. The SAT compiler is offered as a separate module,
which has the same interface as the CP module. The SAT module is complementary
to the CP module, and, for many problems, significantly outperforms the CP
module. The SAT compiler has been tested by using hundreds of benchmarks and
tens of thousands of instances that have been used in CSP and Minizinc
competitions.

Another major addition in version 1.0 is an external language interface with
C, through which Picat programs can call deterministic predicates that are
written as functions in C. This interface can be used to link Picat with other
systems, such as database, GUI programming, mobile computing, game
programming, networking, and web programming libraries.

Since the release of version 0.1 about one year ago, hundreds of improvements
have been incorporated into the design and the implementation. The updates log
can be seen at: [http://picat-lang.org/updates.html](http://picat-
lang.org/updates.html). Picat will continue to grow, and we look forward to
your input and feedback. Send your questions, comments, and requests to:

[https://groups.google.com/forum/#!forum/picat-
lang](https://groups.google.com/forum/#!forum/picat-lang)

