Expression Templates

Expression templates are "structures representing a computation at compile time, which structures are evaluated only as needed to produce efficient code for the entire computation" (https://en.wikipedia.org/wiki/Expression_templates). As needed, now we are in the centre of lazy evaluation and in the centre of this post.

Read more
Add CommentViews: 23304

C++ is Lazy: CRTP

In my previous post Recursion, List Manipulation and Lazy Evaluation I wrote about the characteristics of functional programming:  The story about lazy evaluation in C++ is short. Sorry to say but I have forgotten templates. The two advanced techniques CRTP and expression templates are based on lazy evaluation.

Read more
Tags: templates
Comments 4Views: 55391

Six Vouchers to Win

Ivan Cukic is currently writing a book on "Functional Programming in C++" for Manning Publication. Currently, 4 out of 14 chapters are published under the Manning Early Access Program. A new chapter is planned to appear each month. Here are the details of his book.

Read more
Add CommentViews: 9314

Monads in C++

Monads in C++? What a strange name for a post. But it's not so strange. With std::optional C++17 gets a monad. The ranges library from Eric Niebler and the extended futures are also monads. For both, we can hope for in C++20.

Read more
Tags: C++20
Comments 39Views: 39812

Concepts

We stay in the year 2020. With high probability we will get concepts. Of course, waterproof statements about the future are difficult but the statement is from Bjarne Stroustrup (Meeting C++ 2016 at Berlin).

Read more
Comments 2Views: 14976

The New Ranges Library

A small time jump and we are in the year 2020. C++ will get - as far as the future is predictable - the new ranges library. Thanks to Eric Nieblers library, the working with the Standard Template Library (STL) will become much more comfortable and powerful.

 

Read more
Tags: C++20
Comments 2Views: 22303

Fold Expressions

With fold expressions you can implement the from Haskell known functions foldl, foldr, foldl1 and foldr1 directly in C++. These four functions successively reduce a list to a single value.

Read more
Tags: C++17
Comments 7Views: 37963

Recursion, List Manipulation, and Lazy Evaluation

The remaining three characteristics of functional programming are told quite quickly: Recursion, manipulation of lists and lazy evaluation.

Read more
Comments 7Views: 19683

Pure Functions

Pure functions are quite similar to mathematical functions. They are the reason that Haskell is called a pure functional programming language.

Read more
Comments 2Views: 15267

Immutable Data

A key to pure functional languages is that their data are immutable. Therefore, assignments such as x= x+1 or ++x are not possible in the pure functional language Haskell. The consequence is that Haskell supports no loops like for, while, or until. They are based on the modification of a loop variable. Haskell does not modify existing data; Haskell creates new data when needed and reuses the old ones.

Read more
Tags: constexpr
Comments 56Views: 11253

My Newest E-Books

Course: Modern C++ Concurrency in Practice

Course: C++ Standard Library including C++14 & C++17

Course: Embedded Programming with Modern C++

Course: Generic Programming (Templates)

Subscribe to the newsletter (+ pdf bundle)

Blog archive

Source Code

Visitors

Today 576

All 2916372

Currently are 134 guests and no members online

Kubik-Rubik Joomla! Extensions

Latest comments