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 4035838
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 20, 20262026-05-20T12:08:55+00:00 2026-05-20T12:08:55+00:00

I’m reading my Programming Languages book, learning somethings about parameters passing, and a doubt

  • 0

I’m reading my Programming Languages book, learning somethings about parameters passing, and a doubt came to me related to call by value/restore.

I understand how it works in general cases, but consider this case:

procedure P(x, y, i){
    x[i]=y[5-i]
    if( i<4 ) P(x, y, i+1)    
}

procedure main(){
    a=(1, 2, 3, 4, 5)
    P(a, a, 0)
}

Once P(a, a, 0) is called, a local copy of both ‘a’ is created (lets call them a_0 and a_1). But when it returns, a_0 and a_1 will have different values.

a_0 = (5, 4, 3, 2, 5)
a_1 = (1, 2, 3, 4, 5)

So when it tries to restore ‘a’with the new value… we find two different posibilities. What would happen here? Would it be first restored to a_0 and the overwritten by a_1? What would be the value of ‘a’ after P(a, a, 0)?

Sorry for the wrong tag, but I tried to use something like ‘parameter’ and I’m not allowed to create new tags yet.

Thanks in advance.

  • 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. Editorial Team
    Editorial Team
    2026-05-20T12:08:56+00:00Added an answer on May 20, 2026 at 12:08 pm

    In such situations, there are three possible ways to define the semantics:

    • Forbid such statements. The compiler statically checks and prevents such situations. This may be difficult to achieve, is the argument is passed down through a series of procedure calls.

    • The semantics is that one of the copies takes precedence over the other. This would be realised by restoring each of the argument values back one by one. The fact that two refer to the same original variable will mean that there are two copies made into that variable, and the latter will succeed.

    • The semantics are undefined, and each compiler is free to implement this as it sees fit. C has such semantics for the evaluation order of arguments to procedures. In such as circumstances, the programmer needs to be aware of this to avoid writing unportable code.

    So the actual semantics will depend on which language/compiler combination you are considering. On the other hand, if unambiguous formal semantics of the programming language are provided (and certain properties have been proven about it, such as that it is unambiguous), then checking the semantics is the way to determine what the result of your program should be.

    The interesting question is what do the formal semantics of call-by-copy-restore look like.

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

Sidebar

Related Questions

link Im having trouble converting the html entites into html characters, (&# 8217;) i
I am trying to understand how to use SyndicationItem to display feed which is
Seemingly simple, but I cannot find anything relevant on the web. What is the
Does anyone know how can I replace this 2 symbol below from the string
this is what i have right now Drawing an RSS feed into the php,
I'm trying to decode HTML entries from here NYTimes.com and I cannot figure out
That's pretty much it. I'm using Nokogiri to scrape a web page what has
I have just tried to save a simple *.rtf file with some websites and
I want to count how many characters a certain string has in PHP, but
I ran into a problem. Wrote the following code snippet: teksti = teksti.Trim() teksti

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.