Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 34835
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T14:08:27+00:00 2026-05-10T14:08:27+00:00

Actually, this question seems to have two parts: How to implement pattern matching? How

  • 0

Actually, this question seems to have two parts:

  • How to implement pattern matching?
  • How to implement send and receive (i.e. the Actor model)?

For the pattern matching part, I’ve been looking into various projects like App and Prop. These look pretty nice, but couldn’t get them to work on a recent version (4.x) of g++. The Felix language also seems to support pattern matching pretty well, but isn’t really C++.

As for the Actor model, there are existing implementations like ACT++ and Theron, but I couldn’t find anything but papers on the former, and the latter is single-threaded only [see answers].

Personally, I’ve implemented actors using threading and a thread-safe message queue. Messages are hash-like structures, and used these together with a number of preprocessor macros to implemented simple pattern matching.

Right now, I can use the following code to send a message:

(new Message(this))     ->set('foo', 'bar')     ->set('baz', 123)     ->send(recipient); 

And the following to do simple pattern matching (qDebug and qPrintable are Qt-specific):

receive_and_match(m)     match_key('foo')    { qDebug('foo: %s', qPrintable(m->value('foo').toString())); }     or_match_key('baz') { qDebug('baz: %d', m->value('baz').toInt()); }     or_match_ignore end_receive 

However, this looks a bit hackish to me, and isn’t very robust.

How would you do it? Did I miss any existing work?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T14:08:28+00:00Added an answer on May 10, 2026 at 2:08 pm

    One of the important things about erlang is how the features are used to make robust systems.

    The send/recieve model is no-sharing, and explicitly copying. The processes themselves are lightweight threads.

    If you did desire the robust properties of the erlang model, you would be best to use real processes and IPC rather than threads.

    If you want robust message passing though you may end up wanting to serialize and deserialise the contents. Especially with type safety.

    Pattern matching in C++ isn’t always pretty but there will be a good pattern for this – you will end up creating a dispatcher object that uses some form of polymorphism to get what you want.

    Although if you are not careful you end up with xml over pipes 🙂

    Really, if you want the erlang model you really want to use erlang. If there are slow bits, I’m sure you can augment your program using a foreign function internet.

    The problem about re-implementing parts, is you won’t get a good cohesive library and solution. The solutions you have already don’t look much like C++ anymore.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 110k
  • Answers 110k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer I am working on a scanning project as well, and… May 11, 2026 at 9:36 pm
  • Editorial Team
    Editorial Team added an answer This is certainly possible to do, but will depend on… May 11, 2026 at 9:36 pm
  • Editorial Team
    Editorial Team added an answer You could use utf8_decode and check with your detectUTF8 function… May 11, 2026 at 9:36 pm

Related Questions

This is something I've come across twice in the past month and I'm not
I was wondering how you guys actually develop large applications when you are your
Because Canvas3D doesn't have the ability to resize dynamically with the parent frame, I
The long Exec is installing .NET 3.5, and out script is based off this

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.