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 237k
  • Answers 237k
  • 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 After some googling I have finally found a fitting solution… May 13, 2026 at 6:35 am
  • Editorial Team
    Editorial Team added an answer If you want to read from excel in C#, i've… May 13, 2026 at 6:35 am
  • Editorial Team
    Editorial Team added an answer You can represent the 128 Bit MD5 hash values with… May 13, 2026 at 6:35 am

Related Questions

To adhere to 1st normal form, one of the things you must avoid is
I routinely run into this problem, and I'm not sure how to get past
This is something I've come across twice in the past month and I'm not
I have two models, associated with a HABTM (actually using has_many :through on both

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.