Parsing command line arguments

swi-prolog

Solution

Prolog uses matching.

?- current_prolog_flag(argv, [File | Rest]).
File = 'C:\\Program Files\\pl\\bin\\swipl-win.exe',
Rest = ['--win_app'].

This matches a list with a head and the tail:

[Head | Tail]

Head is the first element and Tail is the rest of the list.

To get the last element, use:

?- current_prolog_flag(argv, Argv), append(_, [Last], Argv).
Argv = ['C:\\Program Files\\pl\\bin\\swipl-win.exe', '--win_app'],
Last = '--win_app'

To get help about functions like append:

apropos(append).

Problem

I'm very confused with prolog, it's way different to any language I've ever used (many languages) How do I go about getting argv[0] from: ``` current_prolog_flag(argv, Argv), write(Argv). ``` Now if I tried to type Argv[0] or Argv(0) or Argv<0> it fails.. this leaves me with no clue and very little help from the documentation.. it seems that they expect you to already be a prolog expert :D Another question, how would I assign Argv[0] to a variable so I can print it later using "write" ?

Original source