Let's say i have list Xs = [a,b,c].
Now i want to iterate through all elements and call another function for this elements. My question is: how to do this using head and tail? I would be grateful for help.
Prolog-iterating through list
44k Views Asked by Dago At
1
There are 1 best solutions below
Related Questions in LIST
- Difference between list() and dict() with generators
- python how to write list of lists to file
- SML - Find same elements in a string
- How to divide list item by list item from another list using Python?
- How to get a certain element in a list of lists?
- How to read in numbers from n lines into a Scala list?
- Create a list of sequential monthly dates in PHP given initial date and quantity
- Python elegant way to sort numerically named directories
- sorting all data on multiple pages by clicking on its header
- List item keeps same memory address following sort/copy
- How to convert Hibernate List to String?
- using a for loop to compare lists
- How to keep track of word count in text file
- Running multiprocessing on two different functions in Python 2.7
- How do you fuse string items from two lists into new elements of a new list?
Related Questions in PROLOG
- prolog traverse nonstandard tree left to right
- Constraint not propagated upon instantiation of list members
- SWI Prolog pass a goal with non-zero arity through the command line arguments
- Predicate that pick elements which are on list twice not less not more
- prolog-false is returned instead of a number
- Freezing goal in prolog
- freeze for more than one variable
- Why I can't get an answer for the Ship Puzzle with Prolog?
- Evaluate a number in (a few) natural language
- Prolog binding arguments
- gprolog: Getting a stacktrace after an exception
- Prolog- Returning elements from facts
- run a prolog code with swipl in a command line
- Prolog- singleton variable in branch warning
- Prolog-iterating through list
Related Questions in ITERATION
- Add key and value to dictionary
- For...Next loop breaks when using Not() operator
- Python - Nested Lists
- Process pairs of elements in a vector
- Understanding "ValueError: need more than 1 value to unpack" w/without enumerate()
- Iteration vs. Recursion for simple processing?
- Iteration over XML returns Same Node Over & Over
- Can I trust the order of a dict to remain the same each time it is iterated over?
- Perl: Iterating through large hash, runs out of memory
- Prolog-iterating through list
- Making Sub Lists Based on Lengths of Items
- How to solve T(n) = T(n-1) + n^2?
- Python: If key in dictA exist and key dictB do something
- Next element of array every iteration chat messages display php
- C - Simple Linked List program that handles strings
Related Questions in HEAD
- Is there a way to emulate the head command in Windows cmd?
- Fanelli face detection - PCL code vs. author's implementation
- Prolog-iterating through list
- function similar to head() for matrix
- HTML: How to initiate HTML document header
- Head pose estimation opencv
- Pattern Lab: changing the title
- javascript refuses to work in head/external file
- head command - find first line of non-whitespace
- Git push to refs/heads/master fails on my mac, how to fix?
- Remove the default css styles tag in wp_head
- tablesorter stickyhead widget enabling checkboxes jumps to top of the table
- How to include different meta tags for each page dynamically within site to be seen in Google search
- Doubly Linked List with different type of head
- rel-canonical prev/next when head can not be written
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Generally, you do not iterate in Prolog. Instead, you write a rule with a pair of recursive clauses, like this:
The first clause processes the base case, when the list
[]is empty. In this case, there is nothing to do, so the body of the rule is empty as well.The second clause processes the case when your list has at least one element. Syntax
[H|T]unifies with your list in such a way thatHbecomes the head of the list, andTbecomes its tail. For example, if you processdosomething([a,b,c]),Hbecomesa, andTbecomes[b,c].The body of this rule has two parts. The first part operates on the head, calling
processon it. This is the rule that you want executed for each element of the list. The second part invokesdosomethingrule recursively on the tail of the list. When the tail list is not empty, the second clause ofdosomethingwould unify with the shorter list to continue processing. When the tail list is empty, the first clause would unify, thus ending the processing.