Preferencje help
Widoczny [Schowaj] Abstrakt
Liczba wyników

Znaleziono wyników: 24

Liczba wyników na stronie
first rewind previous Strona / 2 next fast forward last
Wyniki wyszukiwania
Wyszukiwano:
w słowach kluczowych:  functional programming
help Sortuj według:

help Ogranicz wyniki do:
first rewind previous Strona / 2 next fast forward last
EN
We present a formal translation of a resource-aware extension of the Abstract Behavioral Specification (ABS) language to the functional language Haskell. ABS is an actor-based language tailored to the modeling of distributed systems. It combines asynchronous method calls with a suspend and resume mode of execution of the method invocations. To cater for the resulting cooperative scheduling of the method invocations of an actor, the translation exploits for the compilation of ABS methods Haskell functions with continuations. The main result of this article is a correctness proof of the translation by means of a simulation relation between a formal semantics of the source language and a high-level operational semantics of the target language, i.e., a subset of Haskell. We further prove that the resource consumption of an ABS program extended with a cost model is preserved over this translation, as we establish an equivalence of the cost of executing the ABS program and its corresponding Haskell-translation. Concretely, the resources consumed by the original ABS program and those consumed by the Haskell program are the same, considering a cost model. Consequently, the resource bounds automatically inferred for ABS programs extended with a cost model, using resource analysis tools, are sound resource bounds also for the translated Haskell programs. Our experimental evaluation confirms the resource preservation over a set of benchmarks featuring different asymptotic costs.
EN
We investigate the complexity of the standard translation of lambda calculus into combinatory logic. The main result shows that the asymptotic growth rate of the size of a translated term is Θ(n3) in worst-case, where n denotes the size of the lambda term.
EN
This paper addresses the problem of using functional programming (FP) languages for research and educational purposes. In order to identify the problems associated with the use of FP languages such as Erlang, an experiment consisting of two surveys was performed. The first survey was anonymous and aimed at establishing whether the participants prefer object-oriented or functional coding. The second one was a survey made after the students finished an Erlang course. The results of these two surveys demonstrate that functional programming is underrated with no apparent reasons. Possible steps to address this problem are suggested.
4
Content available ChR: Dynamic Functional Constraints Checking in R
EN
Dynamic typing of R programming language may issue some quality problems in large scale data-science and machine-learning projects for which the language is used. Following our efforts on providing gradual typing library for Clojure we come with a package chR - a library that offers functionality of run-time type-related checks in R. The solution is not only a dynamic type checker, it also helps to systematize thinking about types in the language, at the same time offering high expressivenes and full adherence to functional programming style.
5
Content available remote CoCaml: Functional Programming with Regular Coinductive Types
EN
Functional languages offer a high level of abstraction, which results in programs that are elegant and easy to understand. Central to the development of functional programming are inductive and coinductive types and associated programming constructs, such as pattern-matching. Whereas inductive types have a long tradition and are well supported in most languages, coinductive types are subject of more recent research and are less mainstream. We present CoCaml, a functional programming language extending OCaml, which allows us to define recursive functions on regular coinductive datatypes. These functions are defined like usual recursive functions, but parameterized by an equation solver. We present a full implementation of all the constructs and solvers and show how these can be used in a variety of examples, including operations on infinite lists, infinitary γ-terms, and p-adic numbers.
PL
W ostatnich latach język programowania JavaScript wyrasta na jeden z najważniejszych języków programowania pierwszych dekad XXI wieku. Język ten, powstały w połowie lat 90. XX wieku, początkowo znajdował zastosowanie na stronach WWW, w których javascriptowy kod umieszczony w znaczniku języka HTML pozwalał na wzbogacenie funkcjonalności strony. Z biegiem czasu rola tego języka wzrastała i obecnie stał się on podstawą działania wielu bibliotek, które mają zastosowanie w efektywnym tworzeniu kodu zarówno stron internetowych jak i aplikacji webowych, z których najpopularniejszą jest niewątpliwie biblioteka jQuerry. O wzrastającej popularności tego języka świadczyć może duża liczba opublikowanych w ostatnich kilku latach książek poświęconych temu językowi – znacznie większa niż liczba tytułów opisujących inne języki programowania. Podstawowe zastosowania języka JavaScript w zasadzie nie wymagały od programisty znajomości innych metod programowania niż te, które są spotykane w najczęściej używanych obecnie językach programowania wywodzących się z języka C ( C++, C#, Java). Okazuje się jednak, że ten język programowania oferuje programistom znacznie większy potencjał funkcjonalności, niż ten znany z tradycyjnych języków programowania. W tym artykule opisano próby użycia technik programistycznych, dostępnych w tym języku, które nie są powszechnie znane, w celu zastosowania ich w typowych problemach obliczeniowych.
EN
In recent years, the JavaScript programming language grows into one of the most important programming languages the first decades of the twenty-first century. This language, created in the mid-90th century, was initially used on the Web pages, where the JavaScript code placed in the HTML tag allowed to enrich functionality of the site. Over time, the role of this language has grown, and now it has become the basis of many libraries that are used in the efficient development of web site code, the most popular of which is the jQuery library. The growing popularity of this language can be proven by a large number of books devoted to JavaScript programming language published in the last few years - much larger than the number of titles that describe other programming languages. Basic use of JavaScript language does not require the programmer to know other programming methods than those that are known from the most widely used in programming languages derived from the C language (C ++, C#, Java). It turns out, however, that this programming language offers programmers a much greater potential of functionality than that of traditional programming languages. This article describes attempts to use programming techniques available in that language that are not commonly known, in order to use them in typical computational problems.
7
Content available Monadic Printing Revisited
EN
Expressive and clear implementation of monadic printing requires an amount of work to define and design proper abstractions to rely upon when performing the actual programming works. Our previous realization of tree printing library left us with a sense of lack with respect to these considerations. This is why we decided to re-design and re-implement the library with core algorithms based upon new, effective and expressive text printing and concatenation routines. This paper presents the results of our work.
8
Content available Low-Cost Dynamic Constraint Checking for the JVM
EN
Using formal methods for software verification slowly becomes a standard in the industry. Overall it is a good idea to integrate as many checks as possible with the programming language. This is a major cause of the apparent success of strong typing in software, either performed on the compile time or dynamically, on runtime. Unfortunately, only some of the properties of software may be expressed in the type system of event the most sophisticated programming languages. Many of them must be performed dynamically. This paper presents a flexible library for the dynamically typed, functional programming language running in the JVM environment. This library offers its users a close to zero run-time overhead and strong mathematical background in category theory.
EN
Computing applications such as metaheuristics-based optimization can greatly benefit from multi-core architectures available on modern supercomputers. In this paper, we describe an easy and efficient way to implement certain population-based algorithms (in the discussed case, multi-agent computing system) on such runtime environments. Our solution is based on an Erlang software library which implements dedicated parallel patterns. We provide technological details on our approach and discuss experimental results.
10
Content available remote Symbolic tensor calculus - functional and dynamic approach
EN
In this paper, we briefly discuss the dynamic and functional approach to computer symbolic tensor analysis. The ccgrg package for Wolfram Language/Mathematica is used to illustrate this approach. Some examples of applications are attached.
PL
Krótko omawiamy zastosowania programowania dynamicznego i funkcyjnego do symbolicznego rachunku tensorowego. Demonstrując ten rodzaj programowania, posługujemy się pakietem ccgrg.m napisanym dla języka Wolfram Language/Mathematica. Zamieszczamy kilka przykładów ilustrujących funkcjonalność pakietu.
EN
Persistent sequences are the core data structure in functional programming style. Their typical implementations usually allow creating infinite streams of objects. Unfortunately, asking for length of an infinite data structure never ends or ends with a run-time error. Similarly, there is no default way to make an effective, O[1] or logarithmic access to an arbitrarily chosen sequence element, even when the nature of the correlation between index value and the sequence element is known. This paper presents a Clojure library that meets these limitations and offers an enhanced version of sequences with a support for effective random access and the ability to ask for an infinite length.
EN
Providing a comprehensive set of mechanisms solving the problem of controlling equivalence and identity requires implementing the functionality for non-sequential containers instrumented with the enriched semantics. Functional programming languages, like Clojure, typically miss the functionality by default. The article presents the design considerations, concepts and implementation details of generalized sets and maps aware of the customizable equivalence and identity together with some usage examples.
13
Content available Monadic Tree Print
EN
Directed acyclic graphs and trees in particular belong to the most extensively used data structures. Visualizing them properly is a key to a success when developing complex algorithms that make use of them. Textual visualizations a la UNIX tree command is essential when the urge is to deal with large trees. Our aim was to design a library that would exploit this approach and to make an implementation of it for a purely functional programming language. The library uses monads to print directly into an output stream or to generate immutable Strings. This paper gives a detailed overview of the solution.
14
Content available Store Revisited
EN
Building abstraction layers is the key do the creation of reliable, scalable and maintainable software. Large number of database models and implementations together with the requirements coming from agile and TDD methodologies make it even more tangible. The paper is an attempt to present features and abstraction layers of a transactional key → value persistent storage library in which the physical storage is fully transparent for a programmer and exchangeable on the run-time.
EN
Immutability and the functional programming style demand an extensible and generic approach in the domain of semantic and structural equivalence testing. The lack of a library or a framework offering such functionality for Clojure programming language led to some design and implementation efforts that this article undertakes to describe. Incidentally it tries to gather and present a collection of most severe mistakes that may be made by a programmer that attempts to test objects of various kinds for their equivalence, both in Clojure and the underlying Java run-time with it's standard library, showing simple yet usable ways to avoid them.
EN
Modern software testing demands high degree of automation especially in test data generation domain. Comparing procedure call behaviors with diverse, automatically generated data, exhibiting various levels of correctness, allows programmers, test engineers and quality managers to track the impact of software changes over time on the designed and implemented system. There are no well known frameworks offering such functionality for functional programming languages. The paper presents a sketch of such framework for Clojure and allows readers to get a detailed insight into some implementation details of the solution.
17
Content available Prerequisites for Effective Requirements Management
EN
Despite an undeniable progress in the whole software creation process, software development is still more art than science. The requirements analysis is a highly critical step in the software life-cycle. Requirement managements errors are the most common errors in the software projects. The proper and effective requirements management saves the overall project costs. The key motivation behind this work was opening a way of finding approaches to managing the requirements appearing in such large software projects as compilers for various programming languages. This paper is an introduction to a full presentation of requirements management solution in which the requirements and implementation information is placed directly in the source code. We concentrate on describing a context in which the requirements management process takes place, trying to present the most interesting existing solutions, indicating the problems and opening a discussion on what ways to follow in the future scientific research.
18
Content available Active object design pattern
EN
Parallelization of software plays nowadays a major role in software efficiency increase. The paper aims to present an active object design pattern and to point out its usefulness in parallel programs design. The ProActive system is also roughly presented, together with the implementation of discussed design pattern.
19
Content available Repo: High-Level Persistence Layer for Clojure
EN
One of our previous works was dedicated to creating an effective no-SQL database solution for Clojure. The solution called Store still missed a high-level data definition language, the concept of objects, complex types and other programmers' productivity increasing features of a production-quality database product. The paper presents a new DSL embedded in Clojure that addresses all those expectations and works seamlessly with the site functional language.
EN
Functional programming is the most popular declarative style of programming. Its lack of state leads to an increase of programmers' productivity and software robustness. Clojure is a very effective Lisp dialect, but it misses a solid embedded database implementation. A store is a proposed embedded database engine for Clojure that helps to deal with the problem of the inevitable state by mostly functional, minimalistic interface, abandoning SQL and tight integration with Clojure as a sole query and data-processing language.
first rewind previous Strona / 2 next fast forward last
JavaScript jest wyłączony w Twojej przeglądarce internetowej. Włącz go, a następnie odśwież stronę, aby móc w pełni z niej korzystać.