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

  • SEARCH
  • Home
  • 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

Related Questions

This question actually has two parts. The first part: I've been developing my first
This is actually a two part question. First,does the HttpContext.Current correspond to the current
I have a question or actually two regarding the Convert.ToInt32 function or Int32.Parse .
I've looked at every question so far and none seem to actually answer this
Problem This question actually came up at work today. We are planning an experiment
Important: This question isn't actually really an ASP.NET question. Anyone who knows anything about
Similar to this question ... What are the worst practices you actually found in
The Question actually says it all. The reason behind this question is I am
Simple question - what does this actually do? var oq = (ObjectQuery<TEntity>)L2EQuery; return ExecuteFirstorDefault<TEntity>(oq,
This is actually a non-critical question, but I get this warning most of the

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.