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

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 26, 20262026-05-26T16:48:46+00:00 2026-05-26T16:48:46+00:00

Is it possible to reverse a list in Prolog with only two arguments? Such

  • 0

Is it possible to reverse a list in Prolog with only two arguments? Such as:

reverse_list(List, Reversed).

This is not homework, I’m reading Seven Programming Languages in Seven Weeks and I got curious.

With three arguments you could use an accumulator (much like in functional programming):

reverseList([], Accumulator, Accumulator).
reverseList([Head|Tail], Accumulator, Solution) :-
  reverseList(Tail, [Head|Accumulator], Solution).
reverseList(List, Solution) :-
  reverseList(List, [], Solution).

Clarification: I saw a solution with append, I was wondering if you could do that without other prolog functions

  • 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-26T16:48:46+00:00Added an answer on May 26, 2026 at 4:48 pm

    sure:

    reverseList([[], Accumulator, Accumulator]).
    reverseList([[Head|Tail], Accumulator, Solution]) :-
      reverseList([Tail, [Head|Accumulator], Solution]).
    reverseList([List, Solution]) :-
      reverseList([List, [], Solution]).
    

    edit:actually that has only one :b

    a non-cheating approach:

    reverse([],[]).
    reverse([H|T],L):-
        reverse(T,R),
        append(R,[H],L).
    

    the problem is that the performance will be quite bad: you will recurse over the list and for each element you will do one append/3.
    using time/1 and a random list of 1,000,000 elements:

    accumulator:    % 2,000,003 inferences, 0.652 CPU in 0.652 seconds (100% CPU, 3066292 Lips)
    arity-2         % 1,000,003 inferences, 0.178 CPU in 0.178 seconds (100% CPU, 5602426 Lips)
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

This is not homework. I saw this article praising Linq library and how great
This might not be possible but I am trying to create a constructor that
I am trying to reverse a linked list. This is the code I have
For those with suspicious minds, this is not homework, just curious. Given a finite
Possible Duplicate: Protect .NET code from reverse engineering? we just develop a application with
I know it's possible to match a word and then reverse the matches using
Many years ago, I was admonished to, whenever possible, release resources in reverse order
Is it possible to perform a global reversed-find on NHibernate-managed objects? Specifically, I have
Possible Duplicate: Why not use tables for layout in HTML? Under what conditions should
Possible Duplicate: How do I calculate someone's age in C#? Maybe this could be

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.